From 76de3bc48efd0033300279e7837364f99e900b31 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Sun, 18 Mar 2012 14:57:51 +0100 Subject: [PATCH] move schema creation to converter classes --- .../orientdb/OrientDBRepositoryDAO.java | 51 +------------------ .../orientdb/PermissionConverter.java | 24 +++++++++ .../orientdb/RepositoryConverter.java | 41 +++++++++++++++ 3 files changed, 67 insertions(+), 49 deletions(-) diff --git a/scm-dao-orientdb/src/main/java/sonia/scm/repository/orientdb/OrientDBRepositoryDAO.java b/scm-dao-orientdb/src/main/java/sonia/scm/repository/orientdb/OrientDBRepositoryDAO.java index 3449f2bdf6..02870e17d5 100644 --- a/scm-dao-orientdb/src/main/java/sonia/scm/repository/orientdb/OrientDBRepositoryDAO.java +++ b/scm-dao-orientdb/src/main/java/sonia/scm/repository/orientdb/OrientDBRepositoryDAO.java @@ -37,10 +37,6 @@ import com.google.inject.Inject; 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.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.AbstractOrientDBModelDAO; @@ -180,51 +176,8 @@ public class OrientDBRepositoryDAO extends AbstractOrientDBModelDAO try { - OSchema schema = connection.getMetadata().getSchema(); - OClass oclass = schema.getClass(RepositoryConverter.DOCUMENT_CLASS); - - if (oclass == null) - { - oclass = schema.createClass(RepositoryConverter.DOCUMENT_CLASS); - - // model properites - oclass.createProperty(RepositoryConverter.FIELD_ID, OType.STRING); - oclass.createProperty(RepositoryConverter.FIELD_TYPE, OType.STRING); - oclass.createProperty(RepositoryConverter.FIELD_LASTMODIFIED, - OType.LONG); - - // repository properties - oclass.createProperty(RepositoryConverter.FIELD_CONTACT, OType.STRING); - oclass.createProperty(RepositoryConverter.FIELD_CREATIONDATE, - OType.LONG); - oclass.createProperty(RepositoryConverter.FIELD_DESCRIPTION, - OType.STRING); - oclass.createProperty(RepositoryConverter.FIELD_NAME, OType.STRING); - oclass.createProperty(RepositoryConverter.FIELD_PERMISSIONS, - OType.EMBEDDEDLIST); - oclass.createProperty(RepositoryConverter.FIELD_PROPERTIES, - OType.EMBEDDEDMAP); - oclass.createProperty(RepositoryConverter.FIELD_PUBLIC, OType.BOOLEAN); - - // indexes - oclass.createIndex(RepositoryConverter.INDEX_ID, INDEX_TYPE.UNIQUE, - RepositoryConverter.FIELD_ID); - oclass.createIndex(RepositoryConverter.INDEX_TYPEANDNAME, - INDEX_TYPE.UNIQUE, RepositoryConverter.FIELD_NAME, - RepositoryConverter.FIELD_TYPE); - schema.save(); - } - - oclass = schema.getClass(PermissionConverter.DOCUMENT_CLASS); - - if (oclass == null) - { - oclass = schema.createClass(PermissionConverter.DOCUMENT_CLASS); - oclass.createProperty(PermissionConverter.FIELD_NAME, OType.STRING); - oclass.createProperty(PermissionConverter.FIELD_TYPE, OType.STRING); - oclass.createProperty(PermissionConverter.FIELD_GROUP, OType.BOOLEAN); - schema.save(); - } + RepositoryConverter.INSTANCE.createShema(connection); + PermissionConverter.INSTANCE.createShema(connection); } finally { diff --git a/scm-dao-orientdb/src/main/java/sonia/scm/repository/orientdb/PermissionConverter.java b/scm-dao-orientdb/src/main/java/sonia/scm/repository/orientdb/PermissionConverter.java index 56884a34b6..7eb9a4d2a7 100644 --- a/scm-dao-orientdb/src/main/java/sonia/scm/repository/orientdb/PermissionConverter.java +++ b/scm-dao-orientdb/src/main/java/sonia/scm/repository/orientdb/PermissionConverter.java @@ -33,6 +33,9 @@ package sonia.scm.repository.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.OSchema; import com.orientechnologies.orient.core.metadata.schema.OType; import com.orientechnologies.orient.core.record.impl.ODocument; @@ -127,4 +130,25 @@ public class PermissionConverter extends AbstractConverter return permission; } + + /** + * Method description + * + * + * @param connection + */ + void createShema(ODatabaseDocumentTx connection) + { + OSchema schema = connection.getMetadata().getSchema(); + OClass oclass = schema.getClass(DOCUMENT_CLASS); + + if (oclass == null) + { + oclass = schema.createClass(DOCUMENT_CLASS); + oclass.createProperty(FIELD_NAME, OType.STRING); + oclass.createProperty(FIELD_TYPE, OType.STRING); + oclass.createProperty(FIELD_GROUP, OType.BOOLEAN); + schema.save(); + } + } } diff --git a/scm-dao-orientdb/src/main/java/sonia/scm/repository/orientdb/RepositoryConverter.java b/scm-dao-orientdb/src/main/java/sonia/scm/repository/orientdb/RepositoryConverter.java index f24ade312d..ea075b0b77 100644 --- a/scm-dao-orientdb/src/main/java/sonia/scm/repository/orientdb/RepositoryConverter.java +++ b/scm-dao-orientdb/src/main/java/sonia/scm/repository/orientdb/RepositoryConverter.java @@ -33,6 +33,10 @@ package sonia.scm.repository.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; @@ -165,4 +169,41 @@ public class RepositoryConverter extends AbstractConverter return repository; } + + /** + * Method description + * + * + * @param connection + */ + 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); + + // repository properties + oclass.createProperty(FIELD_CONTACT, OType.STRING); + oclass.createProperty(FIELD_CREATIONDATE, OType.LONG); + oclass.createProperty(FIELD_DESCRIPTION, OType.STRING); + oclass.createProperty(FIELD_NAME, OType.STRING); + oclass.createProperty(FIELD_PERMISSIONS, OType.EMBEDDEDLIST); + oclass.createProperty(FIELD_PROPERTIES, OType.EMBEDDEDMAP); + oclass.createProperty(FIELD_PUBLIC, OType.BOOLEAN); + + // indexes + oclass.createIndex(INDEX_ID, INDEX_TYPE.UNIQUE, FIELD_ID); + oclass.createIndex(INDEX_TYPEANDNAME, INDEX_TYPE.UNIQUE, FIELD_NAME, + FIELD_TYPE); + schema.save(); + } + } }