Skip to content

Commit 7daae6e

Browse files
committed
some changes on Importtool for Stape 2
1 parent 90efb61 commit 7daae6e

File tree

7 files changed

+285
-166
lines changed

7 files changed

+285
-166
lines changed

src/main/webapp/java/de/htwb/model/DatabaseRepository.java

Lines changed: 130 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -95,21 +95,39 @@ public ArrayList<ImportedShape> getImportedShapesFromTable(String tableName) thr
9595

9696
private ImportedShape getImportedShapeForId(String tableName, int id) throws SQLException
9797
{
98-
final String sql = String.format("SELECT name, start_date, end_date FROM \"%s\".\"%s\" WHERE gid = ?", SCHEME_TEMP, tableName);
98+
99+
100+
//adding start_day, start_month, start_year
101+
final String sql_add_cols = String.format("ALTER TABLE \"%s\".\"%s\" ADD COLUMN IF NOT EXISTS start_day integer, " +
102+
"ADD COLUMN IF NOT EXISTS start_month integer, ADD COLUMN IF NOT EXISTS start_year integer, " +
103+
"ADD COLUMN IF NOT EXISTS end_day integer, ADD COLUMN IF NOT EXISTS end_month integer, " +
104+
"ADD COLUMN IF NOT EXISTS end_year integer", SCHEME_TEMP, tableName);
105+
PreparedStatement ps_cols = connection.prepareStatement(sql_add_cols);
106+
ps_cols.executeUpdate();
107+
108+
109+
final String sql = String.format("SELECT name, start_date, start_day, start_month, start_year, end_date, end_day, " +
110+
"end_month, end_year FROM \"%s\".\"%s\" WHERE gid = ?", SCHEME_TEMP, tableName);
99111
PreparedStatement ps = connection.prepareStatement(sql);
100112
ps.setInt(1, id);
101113

102114
try(ResultSet rs = ps.executeQuery())
103115
{
104-
if(!rs.next())
105-
return null;
116+
if(!rs.next()) return null;
106117

107118
String name = rs.getString(1);
108119
Date validSince = rs.getDate(2);
109-
Date validUntil = rs.getDate(3);
120+
int columnValidSinceDay = rs.getInt(3);
121+
int columnValidSinceMonth = rs.getInt(4);
122+
int columnValidSinceYear = rs.getInt(5);
123+
Date validUntil = rs.getDate(6);
124+
int columnValidUntilDay = rs.getInt(7);
125+
int columnValidUntilMonth = rs.getInt(8);
126+
int columnValidUntilYear = rs.getInt(9);
110127
ArrayList<Polygon> polygonList = getPolygonsForId(tableName, id);
111128
Polygon[] polygons = getPolygonsForId(tableName, id).toArray(new Polygon[polygonList.size()]);
112-
return new ImportedShape(id, name, validSince, validUntil, polygons);
129+
return new ImportedShape(id, name, validSince, columnValidSinceDay, columnValidSinceMonth, columnValidSinceYear,
130+
validUntil, columnValidUntilDay, columnValidUntilMonth, columnValidUntilYear, polygons);
113131
}
114132
/*
115133
final String sql = String.format("SELECT * FROM \"%s\".\"%s\" WHERE gid = ?", SCHEME_TEMP, tableName);
@@ -133,7 +151,9 @@ private ImportedShape getImportedShapeForId(String tableName, int id) throws SQL
133151

134152
private ImportedShape getImportedShapeFromCache(String tableName, int id) throws SQLException
135153
{
136-
final String sql = String.format("SELECT \"name\", \"validSince\", \"validUntil\", \"geom\", ST_ASGEOJSON(geom) FROM \"%s\".\"%s\" WHERE gid = ?", SCHEME_CACHE, tableName);
154+
final String sql = String.format("SELECT \"name\", \"validSince\", \"validSinceDay\", \"validSinceMonth\", " +
155+
"\"validSinceYear\",\"validUntil\", \"validUntilDay\", \"validUntilMonth\", \"validUntilYear\", " +
156+
"\"geom\", ST_ASGEOJSON(geom) FROM \"%s\".\"%s\" WHERE gid = ?", SCHEME_CACHE, tableName);
137157
PreparedStatement ps = connection.prepareStatement(sql);
138158
ps.setInt(1, id);
139159

@@ -144,20 +164,28 @@ private ImportedShape getImportedShapeFromCache(String tableName, int id) throws
144164

145165
String name = rs.getString(1);
146166
Date validSince = rs.getDate(2);
147-
Date validUntil = rs.getDate(3);
148-
PGgeometry geom = (PGgeometry) rs.getObject(4);
167+
int columnValidSinceDay = rs.getInt(3);
168+
int columnValidSinceMonth = rs.getInt(4);
169+
int columnValidSinceYear = rs.getInt(5);
170+
Date validUntil = rs.getDate(6);
171+
int columnValidUntilDay = rs.getInt(7);
172+
int columnValidUntilMonth = rs.getInt(8);
173+
int columnValidUntilYear = rs.getInt(9);
174+
PGgeometry geom = (PGgeometry) rs.getObject(10);
149175
MultiPolygon multiPolygon = new MultiPolygon(geom.getGeometry().getValue());
150176
Polygon[] polygons = multiPolygon.getPolygons();
151-
ImportedShape is = new ImportedShape(id, name, validSince, validUntil, polygons);
152-
is.setGeoJson(rs.getString(5));
177+
ImportedShape is = new ImportedShape(id, name, validSince, columnValidSinceDay, columnValidSinceMonth, columnValidSinceYear,
178+
validUntil, columnValidUntilDay, columnValidUntilMonth, columnValidUntilYear, polygons);
179+
is.setGeoJson(rs.getString(11));
153180
return is;
154181
}
155182
}
156183

157184
private ArrayList<Polygon> getPolygonsForId(String tableName, int id) throws SQLException
158185
{
159186
ArrayList<Polygon> polygons = new ArrayList<>();
160-
final String sql = String.format("SELECT ST_GeometryN(geom, generate_series(1, ST_NumGeometries(geom))) FROM %s.\"%s\" WHERE gid = ?", SCHEME_TEMP, tableName);
187+
final String sql = String.format("SELECT ST_GeometryN(geom, generate_series(1, ST_NumGeometries(geom))) " +
188+
" FROM %s.\"%s\" WHERE gid = ?", SCHEME_TEMP, tableName);
161189
PreparedStatement stmtPolygons = connection.prepareStatement(sql);
162190
stmtPolygons.setInt(1, id);
163191

@@ -207,7 +235,8 @@ private Geoobject getGeoobjectFromShape(ImportedShape importedShape)
207235
return geoobject;
208236
}
209237

210-
private ArrayList<GeoobjectGeometry> getGeoobjectGeometries(ImportedShape importedShape, Geoobject geoobject, ArrayList<OHDMPolygon> OHDMPolygons)
238+
private ArrayList<GeoobjectGeometry> getGeoobjectGeometries(ImportedShape importedShape, Geoobject geoobject,
239+
ArrayList<OHDMPolygon> OHDMPolygons)
211240
{
212241
ArrayList<GeoobjectGeometry> geoobjectGeometries = new ArrayList<>();
213242

@@ -275,7 +304,9 @@ private void insertGeoobjectGeometries(ArrayList<GeoobjectGeometry> geoobjectGeo
275304

276305
private void insertGeoobjectGeometry(GeoobjectGeometry geoobjectGeometry) throws SQLException
277306
{
278-
final String sql = String.format("INSERT INTO %s.\"geoobject_geometry\" (id_target, type_target, id_geoobject_source, classification_id, valid_since, valid_until, source_user_id) VALUES (?, ?, ?, ?, ?, ?, ?) RETURNING id", SCHEME_TEST);
307+
final String sql = String.format("INSERT INTO %s.\"geoobject_geometry\" (id_target, type_target, id_geoobject_source, " +
308+
"classification_id, valid_since, valid_since_day, valid_since_month, valid_since_year, valid_until, " +
309+
"valid_until_day, valid_until_month, valid_until_year, source_user_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING id", SCHEME_TEST);
279310
PreparedStatement stmt = connection.prepareStatement(sql);
280311
stmt.setLong(1, geoobjectGeometry.getIdTarget());
281312
stmt.setLong(2, geoobjectGeometry.getIdTargetType());
@@ -287,12 +318,43 @@ private void insertGeoobjectGeometry(GeoobjectGeometry geoobjectGeometry) throws
287318
else
288319
stmt.setNull(5, Types.DATE);
289320

321+
if(geoobjectGeometry.getValidSinceDay() > 0)
322+
stmt.setInt(6, geoobjectGeometry.getValidSinceDay());
323+
else
324+
stmt.setNull(6, Types.INTEGER);
325+
326+
if(geoobjectGeometry.getValidSinceMonth() > 0)
327+
stmt.setInt(7, geoobjectGeometry.getValidSinceMonth());
328+
else
329+
stmt.setNull(7, Types.INTEGER);
330+
331+
if(geoobjectGeometry.getValidSinceYear() > 0)
332+
stmt.setInt(8,geoobjectGeometry.getValidSinceYear());
333+
else
334+
stmt.setNull(8, Types.INTEGER);
335+
336+
290337
if(geoobjectGeometry.getValidUntil() != null)
291-
stmt.setDate(6, new java.sql.Date(geoobjectGeometry.getValidUntil().getTime()));
338+
stmt.setDate(9, new java.sql.Date(geoobjectGeometry.getValidUntil().getTime()));
292339
else
293-
stmt.setDate(6, new Date(0));
340+
stmt.setDate(9, new Date(0));
294341

295-
stmt.setLong(7, geoobjectGeometry.getIdSourceUser());
342+
if(geoobjectGeometry.getValidUntilDay() > 0)
343+
stmt.setInt(10, geoobjectGeometry.getValidUntilDay());
344+
else
345+
stmt.setNull(10, Types.INTEGER);
346+
347+
if(geoobjectGeometry.getValidUntilMonth() > 0)
348+
stmt.setInt(11, geoobjectGeometry.getValidUntilMonth());
349+
else
350+
stmt.setNull(11, Types.INTEGER);
351+
352+
if(geoobjectGeometry.getValidUntilYear() > 0)
353+
stmt.setInt(12,geoobjectGeometry.getValidUntilYear());
354+
else
355+
stmt.setNull(12, Types.INTEGER);
356+
357+
stmt.setLong(13, geoobjectGeometry.getIdSourceUser());
296358

297359
if(stmt.execute())
298360
{
@@ -359,7 +421,13 @@ private boolean createCacheTable(String tableName) throws Exception
359421
" gid SERIAL,\n" +
360422
" name character varying(254),\n" +
361423
" \"validSince\" date,\n" +
424+
" \"validSinceDay\" integer,\n" +
425+
" \"validSinceMonth\" integer,\n" +
426+
" \"validSinceYear\" integer,\n" +
362427
" \"validUntil\" date,\n" +
428+
" \"validUntilDay\" integer,\n" +
429+
" \"validUntilMonth\" integer,\n" +
430+
" \"validUntilYear\" integer,\n" +
363431
" \"classId\" integer,\n" +
364432
" username character varying(254),\n" +
365433
" geom geometry,\n" +
@@ -379,7 +447,10 @@ private boolean createCacheTable(String tableName) throws Exception
379447

380448
private void insertShapeIntoCache(String tableName, ImportedShape shape, String userName) throws Exception
381449
{
382-
final String sql = String.format("INSERT INTO \""+SCHEME_CACHE+"\".\"%s\" (\"name\", \"validSince\", \"validUntil\", \"classId\", \"username\", \"geom\") VALUES(?, ?, ?, ?, ?, ?)", tableName);
450+
final String sql = String.format("INSERT INTO \""+SCHEME_CACHE+"\".\"%s\" (\"name\", " +
451+
"\"validSince\",\"validSinceDay\",\"validSinceMonth\",\"validSinceYear\"," +
452+
" \"validUntil\",\"validUntilDay\",\"validUntilMonth\",\"validUntilYear\"," +
453+
" \"classId\", \"username\", \"geom\") VALUES(?, ?, ?, ?, ?,?,?,?,?,?,?, ?)", tableName);
383454
PreparedStatement ps = connection.prepareStatement(sql);
384455

385456
if (shape.getName() != null)
@@ -390,30 +461,63 @@ private void insertShapeIntoCache(String tableName, ImportedShape shape, String
390461
ps.setDate(2, new java.sql.Date(shape.getValidSince().getTime()));
391462
else
392463
ps.setNull(2, Types.DATE);
464+
if(shape.getValidSinceDay() >0)
465+
ps.setInt(3, shape.getValidSinceDay());
466+
else
467+
ps.setNull(3, Types.INTEGER);
468+
if(shape.getValidSinceMonth() >0)
469+
ps.setInt(4, shape.getValidSinceMonth());
470+
else
471+
ps.setNull(4, Types.INTEGER);
472+
if(shape.getValidSinceYear() >0)
473+
ps.setInt(5, shape.getValidSinceYear() );
474+
else
475+
ps.setNull(5, Types.INTEGER);
393476

394477
if(shape.getValidUntil() != null)
395-
ps.setDate(3, new java.sql.Date(shape.getValidUntil().getTime()));
478+
ps.setDate(6, new java.sql.Date(shape.getValidUntil().getTime()));
479+
else
480+
ps.setNull(6, Types.DATE);
481+
if(shape.getValidUntilDay() >0)
482+
ps.setInt(7, shape.getValidUntilDay() );
483+
else
484+
ps.setNull(7, Types.INTEGER);
485+
if(shape.getValidUntilMonth()>0)
486+
ps.setInt(8, shape.getValidUntilMonth() );
487+
else
488+
ps.setNull(8, Types.INTEGER);
489+
if(shape.getValidUntilYear() >0)
490+
ps.setInt(9, shape.getValidUntilYear() );
396491
else
397-
ps.setNull(3, Types.DATE);
492+
ps.setNull(9, Types.INTEGER);
398493

399-
ps.setInt(4, shape.getClassificationId());
400-
ps.setString(5, userName);
401-
ps.setObject(6, new PGgeometry(new MultiPolygon(shape.getPolygons())));
494+
ps.setInt(10, shape.getClassificationId());
495+
ps.setString(11, userName);
496+
ps.setObject(12, new PGgeometry(new MultiPolygon(shape.getPolygons())));
402497

403498
ps.execute();
404499
}
405500

406501
public void updateImportedShape(ImportedShape updatedImportedShape, String table) throws Exception
407502
{
408-
final String sql = String.format("UPDATE \""+SCHEME_CACHE+"\".\"%s\" SET \"name\" = ?, \"validSince\" = ?, \"validUntil\" = ?, \"classId\" = ? WHERE gid = ?", table);
503+
final String sql = String.format("UPDATE \""+SCHEME_CACHE+"\".\"%s\" SET \"name\" = ?, " +
504+
"\"validSince\"= ?,\"validSinceDay\"= ?,\"validSinceMonth\"= ?,\"validSinceYear\"= ?," +
505+
"\"validUntil\"= ?,\"validUntilDay\"= ?,\"validUntilMonth\"= ?,\"validUntilYear\"= ?," +
506+
"\"classId\" = ? WHERE gid = ?", table);
409507

410508
PreparedStatement ps = connection.prepareStatement(sql);
411509

412510
ps.setString(1, updatedImportedShape.getName());
413511
ps.setDate(2, new java.sql.Date(updatedImportedShape.getValidSince().getTime()));
414-
ps.setDate(3, new java.sql.Date(updatedImportedShape.getValidUntil().getTime()));
415-
ps.setInt(4, updatedImportedShape.getClassificationId());
416-
ps.setInt(5, updatedImportedShape.getId());
512+
ps.setInt(3, updatedImportedShape.getValidSinceDay());
513+
ps.setInt(4, updatedImportedShape.getValidSinceMonth());
514+
ps.setInt(5, updatedImportedShape.getValidSinceYear());
515+
ps.setDate(6, new java.sql.Date(updatedImportedShape.getValidUntil().getTime()));
516+
ps.setInt(7, updatedImportedShape.getValidUntilDay());
517+
ps.setInt(8, updatedImportedShape.getValidUntilMonth());
518+
ps.setInt(9, updatedImportedShape.getValidUntilYear());
519+
ps.setInt(10, updatedImportedShape.getClassificationId());
520+
ps.setInt(11, updatedImportedShape.getId());
417521

418522
ps.executeUpdate();
419523
}

src/main/webapp/java/de/htwb/model/imported/ImportedShape.java

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,13 @@ public class ImportedShape
99
private int id;
1010
private String name;
1111
private Date validSince;
12+
private int validSinceDay;
13+
private int validSinceMonth;
14+
private int validSinceYear;
1215
private Date validUntil;
16+
private int validUntilDay;
17+
private int validUntilMonth;
18+
private int validUntilYear;
1319
private int classificationId;
1420
private String username;
1521
private transient Polygon[] polygons;
@@ -20,12 +26,33 @@ public class ImportedShape
2026
private String country ;
2127
private String geom;
2228

23-
public ImportedShape(int id, String name, Date validSince, Date validUntil, Polygon[] polygons)
29+
public ImportedShape(int id, String name, Date validSince, int validUntilYear, Polygon[] polygons)
2430
{
2531
this.id = id;
2632
this.name = name;
2733
this.validSince = validSince;
34+
this.validUntilYear = validUntilYear;
35+
this.polygons = polygons;
36+
this.classificationId = 0;
37+
}
38+
public ImportedShape(int id, String name, Date validSince, int validSinceDay
39+
, int validSinceMonth
40+
, int validSinceYear
41+
, Date validUntil
42+
, int validUntilDay
43+
, int validUntilMonth
44+
, int validUntilYear, Polygon[] polygons)
45+
{
46+
this.id = id;
47+
this.name = name;
48+
this.validSince = validSince;
49+
this.validSinceDay = validSinceDay;
50+
this.validSinceMonth = validSinceMonth;
51+
this.validSinceYear = validSinceYear;
2852
this.validUntil = validUntil;
53+
this.validUntilDay = validUntilDay;
54+
this.validUntilMonth = validUntilMonth;
55+
this.validUntilYear = validUntilYear;
2956
this.polygons = polygons;
3057
this.classificationId = 0;
3158
}
@@ -41,13 +68,24 @@ public Polygon[] getPolygons() {
4168
return polygons;
4269
}
4370

71+
public Date getValidSince() { return validSince; }
72+
public int getValidSinceDay() { return validSinceDay; }
73+
public int getValidSinceMonth() { return validSinceMonth; }
74+
public int getValidSinceYear() { return validSinceYear; }
75+
4476
public Date getValidUntil() {
4577
return validUntil;
4678
}
47-
48-
public Date getValidSince() {
49-
return validSince;
79+
public int getValidUntilDay() {
80+
return validUntilDay;
5081
}
82+
public int getValidUntilMonth() {
83+
return validUntilMonth;
84+
}
85+
public int getValidUntilYear() {
86+
return validUntilYear;
87+
}
88+
5189

5290
public String getName() {
5391
return name;

src/main/webapp/java/de/htwb/model/ohdm/GeoobjectGeometry.java

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,13 @@ public class GeoobjectGeometry {
1010
private long idClassification;
1111
private long idSourceUser;
1212
private Date validSince;
13+
private int validSinceDay;
14+
private int validSinceMonth;
15+
private int validSinceYear;
1316
private Date validUntil;
17+
private int validUntilDay;
18+
private int validUntilMonth;
19+
private int validUntilYear;
1420

1521
public GeoobjectGeometry()
1622
{
@@ -54,21 +60,41 @@ public void setIdClassification(long idClassification) {
5460
this.idClassification = idClassification;
5561
}
5662

57-
public Date getValidSince() {
58-
return validSince;
59-
}
63+
64+
public Date getValidSince() { return validSince; }
65+
public int getValidSinceDay() { return validSinceDay; }
66+
public int getValidSinceMonth() { return validSinceMonth; }
67+
public int getValidSinceYear() { return validSinceYear; }
6068

6169
public void setValidSince(Date validSince) {
6270
this.validSince = validSince;
6371
}
72+
public void setValidSinceDay(int validSinceDay) { this.validSinceDay=validSinceDay ; }
73+
public void setValidSinceMonth(int validSinceMonth) { this.validSinceMonth=validSinceMonth; }
74+
public void setValidSinceYear(int validSinceYear) { this.validSinceYear=validSinceYear; }
6475

6576
public Date getValidUntil() {
6677
return validUntil;
6778
}
79+
public int getValidUntilDay() {
80+
return validUntilDay;
81+
}
82+
public int getValidUntilMonth() {
83+
return validUntilMonth;
84+
}
85+
public int getValidUntilYear() {
86+
return validUntilYear;
87+
}
6888

6989
public void setValidUntil(Date validUntil) {
7090
this.validUntil = validUntil;
7191
}
92+
public void setValidUntilDay(int validUntilDay) { this.validUntilDay=validUntilDay ; }
93+
public void setValidUntilMonth(int validUntilMonth) { this.validUntilMonth=validUntilMonth; }
94+
public void setValidUntilYear(int validUntilYear) { this.validUntilYear=validUntilYear; }
95+
96+
97+
7298

7399
public long getIdSourceUser() {
74100
return idSourceUser;

0 commit comments

Comments
 (0)