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: 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; tom@8559: import org.dive4elements.river.model.BedHeight; teichmann@5829: import org.dive4elements.river.model.BedHeightType; mschaefer@8971: import org.dive4elements.river.model.BedHeightValue; mschaefer@8971: import org.dive4elements.river.model.BoundaryKind; teichmann@5829: import org.dive4elements.river.model.Building; 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; mschaefer@8971: import org.dive4elements.river.model.OfficialLine; 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; andre@8683: import org.dive4elements.river.model.SeddbName; 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@8025: import org.dive4elements.river.model.SedimentLoadLS; teichmann@8025: import org.dive4elements.river.model.SedimentLoadLSValue; mschaefer@8971: import org.dive4elements.river.model.SedimentLoadValue; mschaefer@8971: import org.dive4elements.river.model.SobekKind; 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; mschaefer@8971: import org.dive4elements.river.model.sinfo.BedMobility; mschaefer@8971: import org.dive4elements.river.model.sinfo.BedMobilityValue; mschaefer@8971: import org.dive4elements.river.model.sinfo.Channel; mschaefer@8971: import org.dive4elements.river.model.sinfo.ChannelValue; mschaefer@8971: import org.dive4elements.river.model.sinfo.Collision; mschaefer@8971: import org.dive4elements.river.model.sinfo.CollisionType; mschaefer@8971: import org.dive4elements.river.model.sinfo.CollisionValue; mschaefer@8971: import org.dive4elements.river.model.sinfo.DailyDischarge; mschaefer@8971: import org.dive4elements.river.model.sinfo.DailyDischargeValue; mschaefer@8971: import org.dive4elements.river.model.sinfo.DepthEvolution; mschaefer@8971: import org.dive4elements.river.model.sinfo.DepthEvolutionValue; mschaefer@8971: import org.dive4elements.river.model.sinfo.FlowDepth; mschaefer@8971: import org.dive4elements.river.model.sinfo.FlowDepthColumn; mschaefer@8971: import org.dive4elements.river.model.sinfo.FlowDepthValue; mschaefer@8971: import org.dive4elements.river.model.sinfo.Infrastructure; mschaefer@8971: import org.dive4elements.river.model.sinfo.InfrastructureValue; mschaefer@8971: import org.dive4elements.river.model.sinfo.Tkh; mschaefer@8971: import org.dive4elements.river.model.sinfo.TkhColumn; mschaefer@8971: import org.dive4elements.river.model.sinfo.TkhValue; mschaefer@8971: import org.dive4elements.river.model.uinfo.Salix; mschaefer@8971: import org.dive4elements.river.model.uinfo.SalixRank; mschaefer@8971: import org.dive4elements.river.model.uinfo.SalixValue; sascha@3333: sascha@3333: public class FLYSCredentials sascha@3333: extends Credentials sascha@3333: { sascha@3333: public static final String XPATH_USER = mschaefer@8971: "/artifact-database/backend-database/user/text()"; sascha@3333: sascha@3333: public static final String XPATH_PASSWORD = mschaefer@8971: "/artifact-database/backend-database/password/text()"; sascha@3333: sascha@3333: public static final String XPATH_DIALECT = mschaefer@8971: "/artifact-database/backend-database/dialect/text()"; sascha@3333: sascha@3333: public static final String XPATH_DRIVER = mschaefer@8971: "/artifact-database/backend-database/driver/text()"; sascha@3333: sascha@3333: public static final String XPATH_URL = mschaefer@8971: "/artifact-database/backend-database/url/text()"; sascha@3333: teichmann@5193: public static final String XPATH_CONNECTION_INIT_SQLS = mschaefer@8971: "/artifact-database/backend-database/connection-init-sqls/text()"; teichmann@5193: teichmann@8470: public static final String XPATH_VALIDATION_QUERY = mschaefer@8971: "/artifact-database/backend-database/validation-query/text()"; teichmann@8470: tom@8485: public static final String XPATH_MAX_WAIT = mschaefer@8971: "/artifact-database/backend-database/max-wait/text()"; tom@8485: sascha@3333: public static final String DEFAULT_USER = mschaefer@8971: System.getProperty("flys.backend.user", "flys"); sascha@3333: sascha@3333: public static final String DEFAULT_PASSWORD = mschaefer@8971: System.getProperty("flys.backend.password", "flys"); sascha@3333: sascha@3333: public static final String DEFAULT_DIALECT = mschaefer@8971: System.getProperty( mschaefer@8971: "flys.backend.dialect", mschaefer@8971: "org.hibernate.dialect.PostgreSQLDialect"); sascha@3333: sascha@3333: public static final String DEFAULT_DRIVER = mschaefer@8971: System.getProperty( mschaefer@8971: "flys.backend.driver", mschaefer@8971: "org.postgresql.Driver"); sascha@3333: sascha@3333: public static final String DEFAULT_URL = mschaefer@8971: System.getProperty( mschaefer@8971: "flys.backend.url", mschaefer@8971: "jdbc:postgresql://localhost:5432/flys"); sascha@3333: teichmann@5193: public static final String DEFAULT_CONNECTION_INIT_SQLS = mschaefer@8971: System.getProperty( mschaefer@8971: "flys.backend.connection.init.sqls"); teichmann@5193: teichmann@8470: public static final String DEFAULT_VALIDATION_QUERY = mschaefer@8971: System.getProperty( mschaefer@8971: "flys.backend.connection.validation.query"); teichmann@8470: tom@8485: public static final String DEFAULT_MAX_WAIT = mschaefer@8971: System.getProperty("flys.backend.connection.max.wait"); tom@8485: sascha@3333: public static final Class [] CLASSES = { mschaefer@8971: Annotation.class, mschaefer@8971: AnnotationType.class, mschaefer@8971: Attribute.class, mschaefer@8971: AxisKind.class, mschaefer@8971: BedHeight.class, mschaefer@8971: BedHeightValue.class, mschaefer@8971: BedHeightType.class, mschaefer@8971: Building.class, mschaefer@8971: BoundaryKind.class, mschaefer@8971: CrossSection.class, mschaefer@8971: CrossSectionLine.class, mschaefer@8971: CrossSectionPoint.class, mschaefer@8971: CrossSectionTrack.class, mschaefer@8971: CrossSectionTrackKind.class, mschaefer@8971: Depth.class, mschaefer@8971: DGM.class, mschaefer@8971: DischargeTable.class, mschaefer@8971: DischargeTableValue.class, mschaefer@8971: DischargeZone.class, mschaefer@8971: Edge.class, mschaefer@8971: ElevationModel.class, mschaefer@8971: FedState.class, mschaefer@8971: Fixpoint.class, mschaefer@8971: Floodmark.class, mschaefer@8971: Floodplain.class, mschaefer@8971: FloodplainKind.class, mschaefer@8971: Floodmaps.class, mschaefer@8971: FlowVelocityMeasurement.class, mschaefer@8971: FlowVelocityMeasurementValue.class, mschaefer@8971: FlowVelocityModel.class, mschaefer@8971: FlowVelocityModelValue.class, mschaefer@8971: Gauge.class, mschaefer@8971: GrainFraction.class, mschaefer@8971: HWSKind.class, mschaefer@8971: HWSLine.class, mschaefer@8971: HWSPoint.class, mschaefer@8971: HydrBoundary.class, mschaefer@8971: HydrBoundaryPoly.class, mschaefer@8971: HYK.class, mschaefer@8971: HYKEntry.class, mschaefer@8971: HYKFormation.class, mschaefer@8971: HYKFlowZoneType.class, mschaefer@8971: HYKFlowZone.class, mschaefer@8971: Jetty.class, mschaefer@8971: LocationSystem.class, mschaefer@8971: MainValueType.class, mschaefer@8971: MeasurementStation.class, mschaefer@8971: MorphologicalWidth.class, mschaefer@8971: MorphologicalWidthValue.class, mschaefer@8971: NamedMainValue.class, mschaefer@8971: MainValue.class, mschaefer@8971: Position.class, mschaefer@8971: Range.class, mschaefer@8971: River.class, mschaefer@8971: RiverAxis.class, mschaefer@8971: RiverAxisKm.class, mschaefer@8971: Porosity.class, mschaefer@8971: PorosityValue.class, mschaefer@8971: SectieKind.class, mschaefer@8971: SobekKind.class, mschaefer@8971: SeddbName.class, mschaefer@8971: SedimentDensity.class, mschaefer@8971: SedimentDensityValue.class, mschaefer@8971: SedimentLoad.class, mschaefer@8971: SedimentLoadValue.class, mschaefer@8971: SedimentLoadLS.class, mschaefer@8971: SedimentLoadLSValue.class, mschaefer@8971: SQRelation.class, mschaefer@8971: SQRelationValue.class, mschaefer@8971: TimeInterval.class, mschaefer@8971: Unit.class, mschaefer@8971: WstColumn.class, mschaefer@8971: WstColumnQRange.class, mschaefer@8971: WstColumnValue.class, mschaefer@8971: Wst.class, mschaefer@8971: WstQRange.class, mschaefer@8971: OfficialLine.class, mschaefer@8971: BedMobility.class, mschaefer@8971: BedMobilityValue.class, mschaefer@8971: Infrastructure.class, mschaefer@8971: InfrastructureValue.class, mschaefer@8971: Channel.class, mschaefer@8971: ChannelValue.class, mschaefer@8971: CollisionType.class, mschaefer@8971: Collision.class, mschaefer@8971: CollisionValue.class, mschaefer@8971: DailyDischarge.class, mschaefer@8971: DailyDischargeValue.class, mschaefer@8971: SalixRank.class, mschaefer@8971: Salix.class, mschaefer@8971: SalixValue.class, mschaefer@8971: Tkh.class, mschaefer@8971: TkhColumn.class, mschaefer@8971: TkhValue.class, mschaefer@8971: FlowDepth.class, mschaefer@8971: FlowDepthColumn.class, mschaefer@8971: FlowDepthValue.class, mschaefer@8971: DepthEvolution.class, mschaefer@8971: DepthEvolutionValue.class sascha@3333: }; sascha@3333: sascha@3333: public FLYSCredentials() { sascha@3333: } sascha@3333: sascha@3333: public FLYSCredentials( mschaefer@8971: final String user, mschaefer@8971: final String password, mschaefer@8971: final String dialect, mschaefer@8971: final String driver, mschaefer@8971: final String url, mschaefer@8971: final String connectionInitSqls, mschaefer@8971: final String validationQuery, mschaefer@8971: final String maxWait mschaefer@8971: ) { teichmann@5193: super( mschaefer@8971: user, password, dialect, driver, url, mschaefer@8971: connectionInitSqls, validationQuery, maxWait, 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) { mschaefer@8971: final String user = mschaefer@8971: Config.getStringXPath(XPATH_USER, DEFAULT_USER); mschaefer@8971: final String password = mschaefer@8971: Config.getStringXPath(XPATH_PASSWORD, DEFAULT_PASSWORD); mschaefer@8971: final String dialect = mschaefer@8971: Config.getStringXPath(XPATH_DIALECT, DEFAULT_DIALECT); mschaefer@8971: final String driver = mschaefer@8971: Config.getStringXPath(XPATH_DRIVER, DEFAULT_DRIVER); mschaefer@8971: final String url = mschaefer@8971: Config.getStringXPath(XPATH_URL, DEFAULT_URL); mschaefer@8971: final String connectionInitSqls = mschaefer@8971: Config.getStringXPath( mschaefer@8971: XPATH_CONNECTION_INIT_SQLS, mschaefer@8971: DEFAULT_CONNECTION_INIT_SQLS); mschaefer@8971: final String validationQuery = mschaefer@8971: Config.getStringXPath( mschaefer@8971: XPATH_VALIDATION_QUERY, mschaefer@8971: DEFAULT_VALIDATION_QUERY); mschaefer@8971: final String maxWait = mschaefer@8971: Config.getStringXPath(XPATH_MAX_WAIT, DEFAULT_MAX_WAIT); sascha@3333: sascha@3333: instance = new FLYSCredentials( mschaefer@8971: user, password, dialect, driver, url, connectionInitSqls, mschaefer@8971: validationQuery, maxWait); sascha@3333: } sascha@3333: return instance; sascha@3333: } sascha@3333: sascha@3333: public static Credentials getDefault() { sascha@3333: return new FLYSCredentials( mschaefer@8971: DEFAULT_USER, mschaefer@8971: DEFAULT_PASSWORD, mschaefer@8971: DEFAULT_DIALECT, mschaefer@8971: DEFAULT_DRIVER, mschaefer@8971: DEFAULT_URL, mschaefer@8971: DEFAULT_CONNECTION_INIT_SQLS, mschaefer@8971: DEFAULT_VALIDATION_QUERY, mschaefer@8971: DEFAULT_MAX_WAIT mschaefer@8971: ); sascha@3333: } sascha@3333: } sascha@3333: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :