create schema for user class

This commit is contained in:
Sebastian Sdorra
2012-03-18 14:51:10 +01:00
parent c2c10203e8
commit a120fb869f
2 changed files with 68 additions and 0 deletions

View File

@@ -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<User>
public OrientDBUserDAO(Provider<ODatabaseDocumentTx> 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 ----------------------------------------------------------

View File

@@ -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<User>
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();
}
}
}