teichmann@5844: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde teichmann@5844: * Software engineering by Intevation GmbH teichmann@5844: * teichmann@5992: * This file is Free Software under the GNU AGPL (>=v3) teichmann@5844: * and comes with ABSOLUTELY NO WARRANTY! Check out the teichmann@5992: * documentation coming with Dive4Elements River for details. teichmann@5844: */ teichmann@5844: teichmann@5829: package org.dive4elements.river.backend; sascha@3333: teichmann@5829: import org.dive4elements.artifacts.common.utils.Config; teichmann@5829: teichmann@5829: import org.dive4elements.river.model.Annotation; teichmann@5829: import org.dive4elements.river.model.AnnotationType; teichmann@5829: import org.dive4elements.river.model.Attribute; teichmann@5829: import org.dive4elements.river.model.AxisKind; teichmann@5829: import org.dive4elements.river.model.BedHeightSingle; teichmann@5829: import org.dive4elements.river.model.BedHeightSingleValue; teichmann@5829: import org.dive4elements.river.model.BedHeightType; teichmann@5829: import org.dive4elements.river.model.Building; teichmann@5829: import org.dive4elements.river.model.BoundaryKind; teichmann@5829: import org.dive4elements.river.model.CrossSection; teichmann@5829: import org.dive4elements.river.model.CrossSectionLine; teichmann@5829: import org.dive4elements.river.model.CrossSectionPoint; teichmann@5829: import org.dive4elements.river.model.CrossSectionTrack; teichmann@5829: import org.dive4elements.river.model.CrossSectionTrackKind; teichmann@5829: import org.dive4elements.river.model.DGM; teichmann@5829: import org.dive4elements.river.model.Depth; teichmann@5829: import org.dive4elements.river.model.DischargeTable; teichmann@5829: import org.dive4elements.river.model.DischargeTableValue; teichmann@5829: import org.dive4elements.river.model.DischargeZone; teichmann@5829: import org.dive4elements.river.model.Edge; teichmann@5829: import org.dive4elements.river.model.ElevationModel; teichmann@5829: import org.dive4elements.river.model.FedState; teichmann@5829: import org.dive4elements.river.model.Fixpoint; teichmann@5829: import org.dive4elements.river.model.Floodmaps; teichmann@5829: import org.dive4elements.river.model.Floodmark; teichmann@5829: import org.dive4elements.river.model.Floodplain; teichmann@5829: import org.dive4elements.river.model.FloodplainKind; teichmann@5829: import org.dive4elements.river.model.FlowVelocityMeasurement; teichmann@5829: import org.dive4elements.river.model.FlowVelocityMeasurementValue; teichmann@5829: import org.dive4elements.river.model.FlowVelocityModel; teichmann@5829: import org.dive4elements.river.model.FlowVelocityModelValue; teichmann@5829: import org.dive4elements.river.model.Gauge; teichmann@5829: import org.dive4elements.river.model.GrainFraction; teichmann@5829: import org.dive4elements.river.model.HWSKind; teichmann@5829: import org.dive4elements.river.model.HWSLine; teichmann@5829: import org.dive4elements.river.model.HWSPoint; teichmann@5829: import org.dive4elements.river.model.HYK; teichmann@5829: import org.dive4elements.river.model.HYKEntry; teichmann@5829: import org.dive4elements.river.model.HYKFlowZone; teichmann@5829: import org.dive4elements.river.model.HYKFlowZoneType; teichmann@5829: import org.dive4elements.river.model.HYKFormation; teichmann@5829: import org.dive4elements.river.model.HydrBoundary; teichmann@5829: import org.dive4elements.river.model.HydrBoundaryPoly; teichmann@5829: import org.dive4elements.river.model.Jetty; teichmann@5829: import org.dive4elements.river.model.LocationSystem; teichmann@5829: import org.dive4elements.river.model.MainValue; teichmann@5829: import org.dive4elements.river.model.MainValueType; teichmann@5829: import org.dive4elements.river.model.MeasurementStation; teichmann@5829: import org.dive4elements.river.model.MorphologicalWidth; teichmann@5829: import org.dive4elements.river.model.MorphologicalWidthValue; teichmann@5829: import org.dive4elements.river.model.NamedMainValue; rrenkert@7841: import org.dive4elements.river.model.Porosity; rrenkert@7841: import org.dive4elements.river.model.PorosityValue; teichmann@5829: import org.dive4elements.river.model.Position; teichmann@5829: import org.dive4elements.river.model.Range; teichmann@5829: import org.dive4elements.river.model.River; teichmann@5829: import org.dive4elements.river.model.RiverAxis; teichmann@5829: import org.dive4elements.river.model.RiverAxisKm; teichmann@5829: import org.dive4elements.river.model.SQRelation; teichmann@5829: import org.dive4elements.river.model.SQRelationValue; teichmann@5829: import org.dive4elements.river.model.SectieKind; teichmann@5829: import org.dive4elements.river.model.SobekKind; teichmann@5829: import org.dive4elements.river.model.SedimentDensity; teichmann@5829: import org.dive4elements.river.model.SedimentDensityValue; teichmann@8026: import org.dive4elements.river.model.SedimentLoad; teichmann@8026: import org.dive4elements.river.model.SedimentLoadValue; teichmann@8025: import org.dive4elements.river.model.SedimentLoadLS; teichmann@8025: import org.dive4elements.river.model.SedimentLoadLSValue; teichmann@5829: import org.dive4elements.river.model.TimeInterval; teichmann@5829: import org.dive4elements.river.model.Unit; teichmann@5829: import org.dive4elements.river.model.Wst; teichmann@5829: import org.dive4elements.river.model.WstColumn; teichmann@5829: import org.dive4elements.river.model.WstColumnQRange; teichmann@5829: import org.dive4elements.river.model.WstColumnValue; teichmann@5829: import org.dive4elements.river.model.WstQRange; teichmann@6313: import org.dive4elements.river.model.OfficialLine; sascha@3333: sascha@3333: public class FLYSCredentials sascha@3333: extends Credentials sascha@3333: { sascha@3333: public static final String XPATH_USER = sascha@3333: "/artifact-database/backend-database/user/text()"; sascha@3333: sascha@3333: public static final String XPATH_PASSWORD = sascha@3333: "/artifact-database/backend-database/password/text()"; sascha@3333: sascha@3333: public static final String XPATH_DIALECT = sascha@3333: "/artifact-database/backend-database/dialect/text()"; sascha@3333: sascha@3333: public static final String XPATH_DRIVER = sascha@3333: "/artifact-database/backend-database/driver/text()"; sascha@3333: sascha@3333: public static final String XPATH_URL = sascha@3333: "/artifact-database/backend-database/url/text()"; sascha@3333: teichmann@5193: public static final String XPATH_CONNECTION_INIT_SQLS = teichmann@5193: "/artifact-database/backend-database/connection-init-sqls/text()"; teichmann@5193: sascha@3333: public static final String DEFAULT_USER = sascha@3333: System.getProperty("flys.backend.user", "flys"); sascha@3333: sascha@3333: public static final String DEFAULT_PASSWORD = sascha@3333: System.getProperty("flys.backend.password", "flys"); sascha@3333: sascha@3333: public static final String DEFAULT_DIALECT = sascha@3333: System.getProperty( sascha@3333: "flys.backend.dialect", sascha@3333: "org.hibernate.dialect.PostgreSQLDialect"); sascha@3333: sascha@3333: public static final String DEFAULT_DRIVER = sascha@3333: System.getProperty( sascha@3333: "flys.backend.driver", sascha@3333: "org.postgresql.Driver"); sascha@3333: sascha@3333: public static final String DEFAULT_URL = sascha@3333: System.getProperty( sascha@3333: "flys.backend.url", sascha@3333: "jdbc:postgresql://localhost:5432/flys"); sascha@3333: teichmann@5193: public static final String DEFAULT_CONNECTION_INIT_SQLS = teichmann@5193: System.getProperty( teichmann@5193: "flys.backend.connection.init.sqls"); teichmann@5193: sascha@3333: public static final Class [] CLASSES = { sascha@3333: Annotation.class, sascha@3333: AnnotationType.class, sascha@3333: Attribute.class, aheinecke@5146: AxisKind.class, sascha@3333: BedHeightSingle.class, sascha@3333: BedHeightSingleValue.class, sascha@3333: BedHeightType.class, sascha@3333: Building.class, aheinecke@5063: BoundaryKind.class, sascha@3333: CrossSection.class, sascha@3333: CrossSectionLine.class, sascha@3333: CrossSectionPoint.class, sascha@3333: CrossSectionTrack.class, aheinecke@5242: CrossSectionTrackKind.class, sascha@3333: Depth.class, sascha@3333: DGM.class, sascha@3333: DischargeTable.class, sascha@3333: DischargeTableValue.class, sascha@3333: DischargeZone.class, sascha@3333: Edge.class, sascha@3333: ElevationModel.class, aheinecke@5063: FedState.class, sascha@3333: Fixpoint.class, aheinecke@5547: Floodmark.class, sascha@3333: Floodplain.class, aheinecke@5242: FloodplainKind.class, sascha@3333: Floodmaps.class, sascha@3333: FlowVelocityMeasurement.class, sascha@3333: FlowVelocityMeasurementValue.class, sascha@3333: FlowVelocityModel.class, sascha@3333: FlowVelocityModelValue.class, sascha@3333: Gauge.class, sascha@3333: GrainFraction.class, aheinecke@5063: HWSKind.class, aheinecke@5063: HWSLine.class, aheinecke@5345: HWSPoint.class, sascha@3333: HydrBoundary.class, sascha@3333: HydrBoundaryPoly.class, sascha@3333: HYK.class, sascha@3333: HYKEntry.class, sascha@3333: HYKFormation.class, sascha@3333: HYKFlowZoneType.class, sascha@3333: HYKFlowZone.class, aheinecke@5437: Jetty.class, sascha@3333: LocationSystem.class, sascha@3333: MainValueType.class, ingo@4193: MeasurementStation.class, sascha@3333: MorphologicalWidth.class, sascha@3333: MorphologicalWidthValue.class, sascha@3333: NamedMainValue.class, sascha@3333: MainValue.class, sascha@3333: Position.class, sascha@3333: Range.class, sascha@3333: River.class, sascha@3333: RiverAxis.class, sascha@3333: RiverAxisKm.class, rrenkert@7841: Porosity.class, rrenkert@7841: PorosityValue.class, aheinecke@5063: SectieKind.class, aheinecke@5063: SobekKind.class, sascha@3333: SedimentDensity.class, sascha@3333: SedimentDensityValue.class, teichmann@8026: SedimentLoad.class, teichmann@8026: SedimentLoadValue.class, teichmann@8025: SedimentLoadLS.class, teichmann@8025: SedimentLoadLSValue.class, sascha@3333: SQRelation.class, sascha@3333: SQRelationValue.class, sascha@3333: TimeInterval.class, sascha@3333: Unit.class, sascha@3333: WstColumn.class, sascha@3333: WstColumnQRange.class, sascha@3333: WstColumnValue.class, sascha@3333: Wst.class, teichmann@6313: WstQRange.class, teichmann@6313: OfficialLine.class sascha@3333: }; sascha@3333: sascha@3333: public FLYSCredentials() { sascha@3333: } sascha@3333: sascha@3333: public FLYSCredentials( sascha@3333: String user, sascha@3333: String password, sascha@3333: String dialect, sascha@3333: String driver, teichmann@5193: String url, teichmann@5193: String connectionInitSqls sascha@3333: ) { teichmann@5193: super( teichmann@5193: user, password, dialect, driver, url, connectionInitSqls, CLASSES); sascha@3333: } sascha@3333: sascha@3333: private static Credentials instance; sascha@3333: sascha@3333: public static synchronized Credentials getInstance() { sascha@3333: if (instance == null) { sascha@3333: String user = sascha@3333: Config.getStringXPath(XPATH_USER, DEFAULT_USER); sascha@3333: String password = sascha@3333: Config.getStringXPath(XPATH_PASSWORD, DEFAULT_PASSWORD); sascha@3333: String dialect = sascha@3333: Config.getStringXPath(XPATH_DIALECT, DEFAULT_DIALECT); sascha@3333: String driver = sascha@3333: Config.getStringXPath(XPATH_DRIVER, DEFAULT_DRIVER); sascha@3333: String url = sascha@3333: Config.getStringXPath(XPATH_URL, DEFAULT_URL); teichmann@5193: String connectionInitSqls = teichmann@5193: Config.getStringXPath( teichmann@5193: XPATH_CONNECTION_INIT_SQLS, teichmann@5193: DEFAULT_CONNECTION_INIT_SQLS); sascha@3333: sascha@3333: instance = new FLYSCredentials( aheinecke@5194: user, password, dialect, driver, url, connectionInitSqls); sascha@3333: } sascha@3333: return instance; sascha@3333: } sascha@3333: sascha@3333: public static Credentials getDefault() { sascha@3333: return new FLYSCredentials( sascha@3333: DEFAULT_USER, sascha@3333: DEFAULT_PASSWORD, sascha@3333: DEFAULT_DIALECT, sascha@3333: DEFAULT_DRIVER, teichmann@5193: DEFAULT_URL, teichmann@5193: DEFAULT_CONNECTION_INIT_SQLS); sascha@3333: } sascha@3333: } sascha@3333: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :