Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/datacage/Datacage.java @ 985:8094ba4ab873
Datacage SQL schema: Using sequences for id generation now
to make schema more compatible.
flys-artifacts/trunk@2417 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Thu, 28 Jul 2011 14:38:51 +0000 |
parents | 2b05c4a0c6fd |
children | 70545233f8ee |
line wrap: on
line source
package de.intevation.flys.artifacts.datacage; import java.sql.SQLException; import de.intevation.artifacts.GlobalContext; import de.intevation.artifactdatabase.db.SQL; import de.intevation.artifactdatabase.db.SQLExecutor; import de.intevation.artifactdatabase.LifetimeListener; import de.intevation.artifacts.Artifact; import de.intevation.artifacts.ArtifactDatabase; import de.intevation.artifacts.ArtifactDatabaseException; import de.intevation.flys.artifacts.FLYSArtifact; import de.intevation.artifacts.common.utils.LRUCache; import org.apache.log4j.Logger; import org.w3c.dom.Document; public class Datacage implements LifetimeListener { private static Logger log = Logger.getLogger(Datacage.class); public static final String ARTEFACT_DATABASE_KEY = "global.artifact.database"; private String SQL_DELETE_ALL_USERS = "delete.all.users"; private String SQL_INSERT_USER = "insert.user"; protected SQLExecutor sqlExecutor; public class InitialScan implements ArtifactDatabase.ArtifactLoadedCallback { protected LRUCache<String, Integer> users; public InitialScan() { } @Override public void artifactLoaded( String userId, String collectionId, String artifactId, Artifact artifact ) { if (!(artifact instanceof FLYSArtifact)) { log.warn("ignoring none FLYS artifacts"); return; } FLYSArtifact flysArtifact = (FLYSArtifact)artifact; // TODO: implement me! } public boolean scan(ArtifactDatabase adb) { try { adb.loadAllArtifacts(this); } catch (ArtifactDatabaseException ade) { log.error(ade); return false; } return true; } } // class InitialScan public Datacage() { } @Override public void setup(Document document) { log.debug("setup"); DBConfig config = DBConfig.getInstance(); setupSQL(config.getSQL()); sqlExecutor = new SQLExecutor(config.getDBConnection()); } protected void setupSQL(SQL sql) { SQL_DELETE_ALL_USERS = sql.get(SQL_DELETE_ALL_USERS); SQL_INSERT_USER = sql.get(SQL_INSERT_USER); } @Override public void systemUp(GlobalContext context) { log.debug("systemUp"); initialScan(context); } protected void initialScan(GlobalContext context) { log.debug("initialScan"); Object adbObject = context.get(ARTEFACT_DATABASE_KEY); if (!(adbObject instanceof ArtifactDatabase)) { log.error("missing artefact database. Cannot scan"); return; } ArtifactDatabase adb = (ArtifactDatabase)adbObject; if (!cleanDatabase()) { log.error("cleaning database failed"); return; } InitialScan is = new InitialScan(); if (!is.scan(adb)) { log.error("initial scan failed"); return; } } protected boolean cleanDatabase() { return sqlExecutor.new Instance() { @Override public boolean doIt() throws SQLException { prepareStatement(SQL_DELETE_ALL_USERS); stmnt.execute(); return true; } }.runWrite(); } @Override public void systemDown(GlobalContext context) { log.debug("systemDown"); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :