public abstract class LayerPuntiUtenteGenerici extends LayerPuntiUtente
Per la gestione dei punti utente generici sono state implementate una serie di classi e 2 tabelle su DB. Lo scopo era quello di rendere generica la gestione dei punti utente e di poter distinguere a quale applicazione tali punti facevano riferimento assegnando loro un identificativo di categoria. In questo modo non si rende necessario, a meno di casi non più così generici, il dover creare una nuova tabella per ogni punto ed il creare una classe PuntoPuntoUtenteXxxx per ognuno di essi.
DATABASE
Le tabelle create nel DB sono 2:
 
 
 CATEGORIE_PUNTI_UTENTE
 ID      NUMBER(3)   PRIMARY KEY not null 
 DESCRIZIONE DESCRIZIONE nullable 
 
 POLIGONI_UTENTE
 ID1 NUMBER(8)   PRIMARY KEY not null
 IDCATEGORIA   NUMBER(3)   FOREIGN KEY not null
 ID  VARCHAR2(50)    not null
 GEOM    SDO_GEOMETRY    
 
 La tabella CATEGORIE_POLIGONI_UTENTE è soltanto una tabella di decodifica creata a scopo di “promemoria”, nel senso che dall’applicazione non viene mai 
 utilizzata, ma deve essere inserita la riga relativa alla categoria di interesse se si vuole poter inserire dati nella tabella POLIGONI_UTENTE che 
 rappresenta i poligoni veri e propri.
 ID_CATEGORIA è infatti la foreign key relativa alla tabella CATEGORIE_POLIGONI_UTENTE.
 Un esempio di dati inseriti in CATEGORIE_POLIGONI_UTENTE può essere il seguente.
 ID  DESCRIZIONE
  9  Poligoni Elettorale
 10  Poligoni Commercianti
 
 La seconda riga è un esempio che non corrisponde ad un caso reale. La numerazione è stata fatta iniziare da 9 visto che esistevano già 8 tabelle 
 relative a poligoni utenti specifici (vedi ad es. POLIGONIUT1) che in seguito potrebbero essere convertiti a questa gestione e quindi potrebbero 
 andare a riempire i primi 8 ID della tabella.
 
 La seconda tabella rispetta quella che era la struttura delle tabelle relative ai poligoni utente già esistenti, ma con in più il campo ID_CATEGORIA  
 con il quale si lega il poligono alla categoria di interesse.
 Il campo ID1 è l’identificativo numerico univoco, l’ID è invece l’identificativo descrittivo del poligono, univoco all’interno di una categoria. 
 Un esempio di ID è la data di inserimento del poligono approssimata al millesimo di secondo (es. 24/10/2007 16:15:58:869). 
 Questo è anche l’ID che viene creato di default dalla classe LayerPoligoniUtenteGenerici qualora l’ID non sia stato settato esplicitamente 
 durante l’inserimento del poligono.
 
 Esempio dati in tabella
 ID1 IDCATEGORIA ID  GEOM
  1   9   24/10/2007 16:15:58:869 
  2   9   24/10/2007 16:23:22:100 
  
  CLASSI
  A livello di classi Java, sono state implementate delle classi per la gestione dei LayerTerritorio e per la gestione degli OggettiTerritorio 
  dei poligoni utente generici nel package it.prato.comune.sit.
  LayerTerritorio
  Esiste una classe astratta che si chiama LayerPoligoniUtenteGenerici, che estende LayerPoligoniUtente e che sovrascrive 4 metodi fondamentali:
  
  
  Esiste poi un metodo di ricerca dei poligoni, comune a tutti questi, che si chiama cercaPoligonoUtente (String ID) e che si preoccupa di impostare 
  l’IDCATEGORIA corretto per permettere la ricerca per ID il quale è un identificativo univoco all’interno di una specifica categoria.
  OggettoTerritorio
  Esiste una classe PoligonoPoligoniUtGenerici che estende PoligonoPoligoniUtente e dove sono stati messi i metodi per impostare e recuperare l’IDCATEGORIA.
  Non esistono classi specifiche per i singoli poligoni utenti e PoligonoPoligoniUtGenerici è l’OggettoTerritorio a cui fanno capo tutti i poligoni generici, 
  qualunque sia la categoria a cui appartengono.
  FILE .MAP
  Sul file .map che referenzia il layer del poligono utente generico desiderato, è necessario aggiungere un filtro oltre a dare la giusta sorgente dati:
  
  Esempio
  DATA "GEOM FROM POLIGONI_UTENTE USING UNIQUE ID1"
  FILTER "IDCATEGORIA=9"
  
  Questo perché tutti i poligoni utente generici si trovano sulla stessa tabella e se non vengano filtrati il Map Server li visualizzerà tutti.
  
  IMPLEMENTAZIONE DI UN NUOVO “Poligono Utente Generico”
  
  Quando si ha la necessità di creare un nuovo PoligonoUtente i passi da seguire sono i seguenti:
  
  
  
  Un esempio di classe è la seguente:
  
  package it.prato.comune.sit;
  import it.prato.comune.utilita.logging.interfaces.LogInterface;
  import java.util.HashMap;
  import org.geotools.feature.Feature;
  public class LayerPuntiUtPianoPubb extends LayerPuntiUtenteGenerici {
  
  public static final Integer ID_CATEGORIA = 13;
  
  public LayerPuntiUtPianoPubb(    String configFilePath, 
  LogInterface logger,
  ConfigBean configBean, 
  String nome, 
  int codTPN, 
  int layer, 
  HashMap
           super(configFilePath, logger, configBean, nome, codTPN, layer, nomiCampi);
           
           }
  public LayerPuntiUtPianoPubb() {
        super();
  }
  
  protected Integer getIdCategoria() {
   return ID_CATEGORIA;
   }
   }
   
   
   
   Esempio FILE Config.txt
   * Punti Utente Piano Pubblicita
   001POLIGONIUTELECODTPN=-3700
   001POLIGONIUTELENOMELAYER=PuntiUtentePianoPubblicita
   001POLIGONIUTELEDSPOOLID=1
   001POLIGONIUTELETYPENAME=PUNTI_UTENTE
   
   
   Esempio classe Territorio
   
   public final static int idPuntoUtPianoPubb=47;
   
   // PoligonoUtentiElettorale
   initLayers(pr, idPuntoUtPianoPubb, "PUNTIUTPP", new LayerPuntiUtPianoPubb());
   
   public LayerPuntiUtPianoPubb getPuntiUtPianoPubb() {
   return    (LayerPuntiUtPianoPubb)getTipologiaDivisioneTerritorio(idPuntoUtPianoPubb);
   }
    
    
    
    Esempio .map Elettorale
    
    DATA "GEOM FROM PUNTI_UTENTE USING UNIQUE ID1"
    FILTER "IDCATEGORIA=13” 
LayerTerritorio.SITDefaultFilterVisitorLAYER_OF_LINES, LAYER_OF_POINTS, LAYER_OF_POLYGONS, NL_CODENTE, NL_DTFINEFILTRO, NL_DTFIVAL, NL_DTINIZIOFILTRO, NL_DTIVAL, NL_ENTESTORICO, NL_FID, NL_FLERR, NL_IDSTORICO, NL_IDTPN, NL_PROGFIVAL, NL_PROGIVAL| Constructor and Description | 
|---|
LayerPuntiUtenteGenerici()
Costruttore di default della classe LayerPoligoniUtenteGenerici. 
 | 
LayerPuntiUtenteGenerici(java.lang.String configFilePath,
                        it.prato.comune.utilita.logging.interfaces.LogInterface logger,
                        ConfigBean configBean,
                        java.lang.String nome,
                        int codTPN,
                        int layer,
                        java.util.HashMap<java.lang.String,java.lang.String> nomiCampi)
Costruttore della classe LayerPoligoniUtenteGenerici. 
 | 
| Modifier and Type | Method and Description | 
|---|---|
void | 
appendFeature(OggettoTerritorio oggettoTer,
             SITTransaction transaction)
Inserisce un nuovo oggetto territoriale in questo layer. 
 | 
PuntoPuntiUtente | 
cercaPoligonoUtente(java.lang.String ID)  | 
Filtro | 
getFiltroVuoto()
Crea un filtro SIT vuoto per il layer. 
 | 
cercaPuntoUtentegetContentTypeLayeraddRicerca, addRicerca, addRicerca, addRicerca, addRicerca, addRicerca, appendFeature, castArgsToTypes, cerca, cercaFiltro, cercaFiltro, cercaFiltro, cercaIDTPN, cercaIDTPN, cercaIDTPN, chiConfina, chiContiene, chiContiene, chiContiene, chiContiene, chiCopre, chiInterseca, chiInterseca, chiInterseca, chiInterseca, chiInterseca, chiInterseca, chiInterseca, chiNelRaggioDi, chiOltreUnRaggioDi, chiPiuVicino, chiPiuVicino, chiPiuVicino, chiPiuVicino, chiTocca, chiTocca, contiene, CopiaSuSHP, CopiaSuSHPZip, creaEvento, creaNuovoOggettoTerritorio, csvExport, exportData, getAttributiFk, getAttributiReadWrite, getAttributiRegEx, getAttributiTipo, getCodelessURL, getCodelessURLLabel, getCodTPN, getConfigPrefix, getCountFiltro, getDateFormat, getDefaultAttributeValues, getEspressioneDescrizione, getEspressioneDescrizioneSuggest, getEspressioneIDTPN, getEspressioneNomeOggetto, getFeatureInfo, getGeometryFieldName, getIDLayer, getJDBCConnection, getLastUpdate, getNextId, getNome, getNomiCampi, getNomiCampi, getNomiCampiLegibili, getNomiCampiScrittura, getNomiCampiScrittura, getOrdinamentoCampi, getQueryLimit, getRicerche, getSRID, getTypeName, interseca, isLayerOfLines, isLayerOfPoints, isLayerOfPolygons, isPaginationSupportedByStore, LoadSHP, modifyAndClipCopertura, modifyAndClipCopertura, modifyCopertura, modifyCopertura, modifyCopertura, modifyFeature, modifyFeature, ordinaDistanze, queryDiretta, queryDirettaClose, queryDirettaCloseRs, queryDirettaGetConnection, queryDirettaSql, removeFeature, removeFeature, ricercaSuggest, ricercaSuggest2, ricercaSuggest2, searchByFilter, setAttributiFk, setAttributiReadWrite, setAttributiRegEx, setCodelessURL, setCodelessURLLabel, setDateFormat, setDefaultAttributeValues, setEspressioneDescrizione, setEspressioneDescrizioneSuggest, setEspressioneIDTPN, setEspressioneNomeOggetto, setFiltro, setFiltroTemporale, setNome, setNomiCampi, setNomiCampiLegibili, setOrdinamentoCampi, setQueryLimit, shpExport, spatialiteExport, tocca, validateGeometry, validateGeometrypublic LayerPuntiUtenteGenerici(java.lang.String configFilePath,
                                it.prato.comune.utilita.logging.interfaces.LogInterface logger,
                                ConfigBean configBean,
                                java.lang.String nome,
                                int codTPN,
                                int layer,
                                java.util.HashMap<java.lang.String,java.lang.String> nomiCampi)
configFilePath - logger - configBean - nome - codTPN - layer - nomiCampi - public LayerPuntiUtenteGenerici()
public Filtro getFiltroVuoto() throws SITException
LayerTerritoriogetFiltroVuoto in class LayerTerritorioSITExceptionpublic PuntoPuntiUtente cercaPoligonoUtente(java.lang.String ID)
public void appendFeature(OggettoTerritorio oggettoTer, SITTransaction transaction) throws java.io.IOException, SITException
LayerTerritorioappendFeature in class LayerTerritoriooggettoTer - Oggetto da inserire in questo layertransaction - transazionejava.io.IOException - Errore generico nell'accesso al DBStoreSITException