mirror of
https://github.com/scm-manager/scm-manager.git
synced 2026-03-09 22:00:20 +01:00
move schema creation to converter classes
This commit is contained in:
@@ -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<Repository>
|
||||
|
||||
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
|
||||
{
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user