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 dallapplicazione 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 è lidentificativo numerico univoco, lID è invece lidentificativo descrittivo del poligono, univoco allinterno 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 lID che viene creato di default dalla classe LayerPoligoniUtenteGenerici qualora lID non sia stato settato esplicitamente
durante linserimento 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
lIDCATEGORIA corretto per permettere la ricerca per ID il quale è un identificativo univoco allinterno di una specifica categoria.
OggettoTerritorio
Esiste una classe PoligonoPoligoniUtGenerici che estende PoligonoPoligoniUtente e dove sono stati messi i metodi per impostare e recuperare lIDCATEGORIA.
Non esistono classi specifiche per i singoli poligoni utenti e PoligonoPoligoniUtGenerici è lOggettoTerritorio 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.SITDefaultFilterVisitor
configBean, dtFineFiltro, dtInizioFiltro, filtroTotale, logger
LAYER_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(String configFilePath,
it.prato.comune.utilita.logging.interfaces.LogInterface logger,
ConfigBean configBean,
String nome,
int codTPN,
int layer,
HashMap<String,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(String ID) |
protected OggettoTerritorio |
creaOggetto(org.opengis.feature.simple.SimpleFeature curFeat)
Metodo che crea e restituisce una istanza della classe che rappresenta un oggetto contenuto dal layer.
|
protected String |
getCampoChiave() |
Filtro |
getFiltroVuoto()
Crea un filtro SIT vuoto per il layer.
|
protected abstract Integer |
getIdCategoria() |
protected void |
initNomiCampi(Properties pr,
String ente,
String nomeLayer)
Chiamata in fase di inizializzazione per inizializzare i campi (attributi) disponibili per questo layer e la loro corrispondenza con i nomi logici utilizzati nel file di configurazione
Deve essere implementata da ogni singolo layer con i suoi attributi specifici Tipicamente contiene un certo numero di chiamate al metodo addnomicampi (uno per la chiave primaria ed uno per ogni attributo) come nel seguente esempio addnomicampi(pr,ente,nomeLayer, Costanti.NL_IDTPN); addnomicampi(pr,ente,nomeLayer, Costanti.NL_SINISTRI_NSINISTRO); |
protected void |
initRicerche()
I singoli layer devono sovrascrivere questa funzione per registrare funzioni di ricerca poi disponibili
tramite la funzione
LayerTerritorio.cerca(Integer, Object[])
Per esempio: addRicerca(1, "Circoscrizione", "cercaCircoscrizione", "Nome Circoscrizione"); |
cercaPuntoUtente
creaPoint, creaPoint, creaPoint, creaPoint, getContentTypeLayer
addDefaultValueForField, addnomicampi, addnomicampi, addnomicampiDateFormat, addnomicampiExt, addnomicampiFk, addnomicampiLeggibili, addnomicampiReadWrite, addnomicampiRegEx, addRicerca, addRicerca, addRicerca, addRicerca, addRicerca, addRicerca, addRicercaCond, appendFeature, castArgsToTypes, cerca, cercaFiltro, cercaFiltro, cercaFiltro, cercaIDTPN, cercaIDTPN, cercaIDTPN, cercaPoligoni, cercaPoligoni, cercaPoligoni, cercaPoligoniLike, cercaPoligoniLike, cercaPoligoniLike, cercaPoligono, cercaPoligono, chiConfina, chiContiene, chiContiene, chiContiene, chiContiene, chiCopre, chiInterseca, chiInterseca, chiInterseca, chiInterseca, chiInterseca, chiInterseca, chiInterseca, chiNelRaggioDi, chiOltreUnRaggioDi, chiPiuVicino, chiPiuVicino, chiPiuVicino, chiPiuVicino, chiTocca, chiTocca, contiene, CopiaSuDs, CopiaSuSHP, CopiaSuSHPZip, CreaDsComp, creaEvento, creaNuovoOggettoTerritorio, CreaSHPDsComp, CreaSHPDsComp, csvExport, exportData, FiltroGeografico, getAdditionalFilterServerParams, getAttributiFk, getAttributiReadWrite, getAttributiRegEx, getAttributiTipo, getCodelessURL, getCodelessURLLabel, getCodTPN, getConfigPrefix, getCountFiltro, getCRS, getDataStore, getDateFormat, getDefaultAttributeValues, getEspressioneDescrizione, getEspressioneDescrizioneSuggest, getEspressioneIDTPN, getEspressioneNomeOggetto, getFeatureInfo, getFeatureType, getFIDScrittura, getGeometryFieldName, getIDLayer, getJDBCConnection, getLastUpdate, getNextId, getNome, getNomiCampi, getNomiCampi, getNomiCampiLegibili, getNomiCampiScrittura, getNomiCampiScrittura, getOrdinamentoCampi, getQueryLimit, getRicerche, getSRID, getTypeName, initLayer, initNomiCampiFull, interseca, isLayerOfLines, isLayerOfPoints, isLayerOfPolygons, isPaginationSupportedByStore, LoadSHP, modifyAndClipCopertura, modifyAndClipCopertura, modifyCopertura, modifyCopertura, modifyCopertura, modifyFeature, modifyFeature, modifyFeatureWKT, modifyFeatureWKT, ordinaDistanze, queryDiretta, queryDirettaClose, queryDirettaCloseRs, queryDirettaGetConnection, queryDirettaSql, removeFeature, removeFeature, ricercaSuggest, ricercaSuggest2, ricercaSuggest2, searchByFilter, setAdditionalFilterServerParams, setAttributiFk, setAttributiReadWrite, setAttributiRegEx, setCodelessURL, setCodelessURLLabel, setCodTPN, setDateFormat, setDefaultAttributeValues, setEspressioneDescrizione, setEspressioneDescrizioneSuggest, setEspressioneIDTPN, setEspressioneNomeOggetto, setFiltro, setFiltroTemporale, setNome, setNomiCampi, setNomiCampiLegibili, setOrdinamentoCampi, setQueryLimit, shpExport, spatialiteExport, tocca, validateGeometry, validateGeometry
public LayerPuntiUtenteGenerici(String configFilePath, it.prato.comune.utilita.logging.interfaces.LogInterface logger, ConfigBean configBean, String nome, int codTPN, int layer, HashMap<String,String> nomiCampi)
configFilePath
- logger
- configBean
- nome
- codTPN
- layer
- nomiCampi
- public LayerPuntiUtenteGenerici()
protected OggettoTerritorio creaOggetto(org.opengis.feature.simple.SimpleFeature curFeat)
LayerTerritorio
protected OggettoTerritorio creaOggetto(SimpleFeature curFeat) { return new PuntoSinistro(logger, this, curFeat); }
creaOggetto
in class LayerTerritorio
public Filtro getFiltroVuoto() throws SITException
LayerTerritorio
getFiltroVuoto
in class LayerTerritorio
SITException
protected void initNomiCampi(Properties pr, String ente, String nomeLayer)
LayerTerritorio
initNomiCampi
in class LayerPuntiUtente
protected void initRicerche() throws SITException
LayerTerritorio
LayerTerritorio.cerca(Integer, Object[])
initRicerche
in class LayerTerritorio
SITException
public PuntoPuntiUtente cercaPoligonoUtente(String ID)
protected String getCampoChiave()
getCampoChiave
in class LayerPuntiUtente
protected abstract Integer getIdCategoria()
public void appendFeature(OggettoTerritorio oggettoTer, SITTransaction transaction) throws IOException, SITException
LayerTerritorio
appendFeature
in class LayerTerritorio
oggettoTer
- Oggetto da inserire in questo layertransaction
- transazioneIOException
- Errore generico nell'accesso al DBStoreSITException
Copyright © 2017 Comune di Prato. All rights reserved.