@@ -41,7 +41,7 @@ public class DatabaseSUP {
4141 public static final Marker MARKER = MarkerManager .getMarker ("DatabaseSUP" );
4242
4343 /**
44- * SERVITUDE / Servitude in CNIG standard ("idsup","nomsuplitt")
44+ * SERVITUDE / Servitude in CNIG standard ("idsup","nomsuplitt","nomreg" )
4545 */
4646 public static final String TABLE_SERVITUDE = "servitude" ;
4747
@@ -76,6 +76,7 @@ public class DatabaseSUP {
7676
7777 public static final String COLUMN_IDSUP = "idsup" ;
7878 public static final String COLUMN_NOMSUPLITT = "nomsuplitt" ;
79+ public static final String COLUMN_NOMREG = "nomreg" ;
7980
8081 public static final String COLUMN_IDACTE = "idacte" ;
8182 public static final String COLUMN_FICHIER = "fichier" ;
@@ -98,6 +99,7 @@ public class ActeServitude {
9899 public class Servitude {
99100 public String idsup ;
100101 public String nomsuplitt ;
102+ public String nomreg ;
101103 }
102104
103105 /**
@@ -113,6 +115,11 @@ public class AssietteSup {
113115 */
114116 private Database database ;
115117
118+ /**
119+ * COLUMN nomreg exists in SERVITUDE
120+ */
121+ private boolean nomRegExists ;
122+
116123 /**
117124 * Create DatabaseSUP as an SQLite database.
118125 *
@@ -121,6 +128,8 @@ public class AssietteSup {
121128 */
122129 public DatabaseSUP (Database database ) throws SQLException {
123130 this .database = database ;
131+ this .nomRegExists = false ;
132+ this .fetchNomRegExistence ();
124133 }
125134
126135 /**
@@ -316,7 +325,10 @@ public List<String> getFichiers(List<ActeServitude> actes) {
316325 * @return
317326 */
318327 public List <Servitude > findServitudesByGenerateur (String idGen ) {
319- String sql = "SELECT DISTINCT s.idsup,s.nomsuplitt FROM generateur g "
328+ String nomRegString = this .nomRegExists ? ",s.nomreg" : "" ;
329+ String sql = "SELECT DISTINCT s.idsup,s.nomsuplitt"
330+ + nomRegString
331+ + " FROM generateur g "
320332 + " LEFT JOIN servitude s ON s.idsup = g.idsup "
321333 + " WHERE g.idgen = ?" ;
322334 try {
@@ -335,7 +347,10 @@ public List<Servitude> findServitudesByGenerateur(String idGen) {
335347 * @return
336348 */
337349 public List <Servitude > findServitudesByAssiette (String idAss ) {
338- String sql = "SELECT DISTINCT s.idsup,s.nomsuplitt FROM assiette a "
350+ String nomRegString = this .nomRegExists ? ",s.nomreg" : "" ;
351+ String sql = "SELECT DISTINCT s.idsup,s.nomsuplitt "
352+ + nomRegString
353+ + " FROM assiette a "
339354 + " LEFT JOIN generateur g ON a.idgen = g.idgen "
340355 + " LEFT JOIN servitude s ON s.idsup = g.idsup "
341356 + " WHERE a.idass = ?" ;
@@ -361,6 +376,9 @@ private List<Servitude> fetchServitudes(ResultSet rs) throws SQLException {
361376 Servitude servitude = new Servitude ();
362377 servitude .idsup = rs .getString (COLUMN_IDSUP );
363378 servitude .nomsuplitt = rs .getString (COLUMN_NOMSUPLITT );
379+ if (this .nomRegExists ) {
380+ servitude .nomreg = rs .getString (COLUMN_NOMREG );
381+ }
364382 result .add (servitude );
365383 }
366384 return result ;
@@ -383,6 +401,23 @@ public List<String> getNomSupLitts(List<Servitude> servitudes) {
383401 return new ArrayList <>(result );
384402 }
385403
404+ /**
405+ * Helper to extract "nomReg" values
406+ *
407+ * @param actes
408+ * @return
409+ */
410+ public List <String > getNomRegs (List <Servitude > servitudes ) {
411+ HashSet <String > result = new HashSet <>(servitudes .size ());
412+ for (Servitude servitude : servitudes ) {
413+ if (StringUtils .isEmpty (servitude .nomreg )) {
414+ continue ;
415+ }
416+ result .add (servitude .nomreg );
417+ }
418+ return new ArrayList <>(result );
419+ }
420+
386421 /**
387422 * Validation - Find non unique IDGEN values.
388423 *
@@ -445,4 +480,21 @@ private List<AssietteSup> fetchAssietteSup(ResultSet rs) throws SQLException {
445480 return result ;
446481 }
447482
483+ /**
484+ * Fetch existence of nomReg in SERVITUDE table
485+ */
486+ private void fetchNomRegExistence () {
487+ String sql = "SELECT COUNT(*) AS count "
488+ + " FROM pragma_table_info('servitude') "
489+ + " WHERE name='NOMREG' " ;
490+ try {
491+ PreparedStatement sth = getConnection ().prepareStatement (sql );
492+ ResultSet rs = sth .executeQuery ();
493+ while (rs .next ()) {
494+ this .nomRegExists = rs .getInt ("count" ) > 0 ;
495+ }
496+ } catch (SQLException e ) {
497+ throw new RuntimeException (e );
498+ }
499+ }
448500}
0 commit comments