From a120fb869f31273c3c225ac5cc3860c2f64a7109 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Sun, 18 Mar 2012 14:51:10 +0100 Subject: [PATCH] create schema for user class --- .../scm/user/orientdb/OrientDBUserDAO.java | 30 +++++++++++++++ .../scm/user/orientdb/UserConverter.java | 38 +++++++++++++++++++ 2 files changed, 68 insertions(+) diff --git a/scm-dao-orientdb/src/main/java/sonia/scm/user/orientdb/OrientDBUserDAO.java b/scm-dao-orientdb/src/main/java/sonia/scm/user/orientdb/OrientDBUserDAO.java index a0aeb0a54d..871fdb74e3 100644 --- a/scm-dao-orientdb/src/main/java/sonia/scm/user/orientdb/OrientDBUserDAO.java +++ b/scm-dao-orientdb/src/main/java/sonia/scm/user/orientdb/OrientDBUserDAO.java @@ -36,10 +36,13 @@ package sonia.scm.user.orientdb; import com.google.inject.Provider; import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx; +import com.orientechnologies.orient.core.metadata.schema.OClass; +import com.orientechnologies.orient.core.metadata.schema.OSchema; import com.orientechnologies.orient.core.record.impl.ODocument; import sonia.scm.orientdb.AbstractOrientDBModelDAO; import sonia.scm.orientdb.OrientDBUtil; +import sonia.scm.repository.orientdb.RepositoryConverter; import sonia.scm.user.User; import sonia.scm.user.UserDAO; @@ -73,6 +76,33 @@ public class OrientDBUserDAO extends AbstractOrientDBModelDAO public OrientDBUserDAO(Provider connectionProvider) { super(connectionProvider, UserConverter.INSTANCE); + init(); + } + + //~--- methods -------------------------------------------------------------- + + /** + * Method description + * + */ + public void init() + { + ODatabaseDocumentTx connection = connectionProvider.get(); + + try + { + OSchema schema = connection.getMetadata().getSchema(); + OClass oclass = schema.getClass(UserConverter.DOCUMENT_CLASS); + + if (oclass == null) + { + UserConverter.INSTANCE.createShema(connection); + } + } + finally + { + OrientDBUtil.close(connection); + } } //~--- get methods ---------------------------------------------------------- diff --git a/scm-dao-orientdb/src/main/java/sonia/scm/user/orientdb/UserConverter.java b/scm-dao-orientdb/src/main/java/sonia/scm/user/orientdb/UserConverter.java index ee430e337f..2815023d37 100644 --- a/scm-dao-orientdb/src/main/java/sonia/scm/user/orientdb/UserConverter.java +++ b/scm-dao-orientdb/src/main/java/sonia/scm/user/orientdb/UserConverter.java @@ -33,11 +33,18 @@ package sonia.scm.user.orientdb; //~--- non-JDK imports -------------------------------------------------------- +import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx; +import com.orientechnologies.orient.core.metadata.schema.OClass; +import com.orientechnologies.orient.core.metadata.schema.OClass.INDEX_TYPE; +import com.orientechnologies.orient.core.metadata.schema.OSchema; import com.orientechnologies.orient.core.metadata.schema.OType; import com.orientechnologies.orient.core.record.impl.ODocument; import sonia.scm.orientdb.AbstractConverter; import sonia.scm.orientdb.Converter; +import sonia.scm.orientdb.OrientDBUtil; +import sonia.scm.repository.orientdb.PermissionConverter; +import sonia.scm.repository.orientdb.RepositoryConverter; import sonia.scm.user.User; /** @@ -133,4 +140,35 @@ public class UserConverter extends AbstractConverter implements Converter return user; } + + /** + * Method description + * + * + * @param connection + */ + public void createShema(ODatabaseDocumentTx connection) + { + OSchema schema = connection.getMetadata().getSchema(); + OClass oclass = schema.getClass(DOCUMENT_CLASS); + + if (oclass == null) + { + oclass = schema.createClass(DOCUMENT_CLASS); + + // model properites + oclass.createProperty(FIELD_ID, OType.STRING); + oclass.createProperty(FIELD_TYPE, OType.STRING); + oclass.createProperty(FIELD_LASTMODIFIED, OType.LONG); + + // user properties + oclass.createProperty(FIELD_ADMIN, OType.BOOLEAN); + oclass.createProperty(FIELD_CREATIONDATE, OType.LONG); + oclass.createProperty(FIELD_DISPLAYNAME, OType.STRING); + oclass.createProperty(FIELD_MAIL, OType.STRING); + oclass.createProperty(FIELD_PASSWORD, OType.STRING); + oclass.createProperty(FIELD_PROPERTIES, OType.EMBEDDEDMAP); + schema.save(); + } + } }