Skip to content

Commit

Permalink
refactor: used create class if not exists in cases where is possible,…
Browse files Browse the repository at this point in the history
… minor create class cleanups
  • Loading branch information
tglman committed Feb 24, 2025
1 parent 588160f commit 2e6658d
Show file tree
Hide file tree
Showing 6 changed files with 30 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ public boolean createClassIfNotExists(
StringBuilder cmd = new StringBuilder("create class ");
cmd.append('`');
cmd.append(className);
cmd.append('`');
cmd.append("` if not exists ");

List<OClass> superClassesList = new ArrayList<OClass>();
if (superClasses != null && superClasses.length > 0) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,9 +164,11 @@ public void init() {
private synchronized void checkServerId() {
ODatabaseDocumentInternal db = openSystemDatabase();
try {

OClass clazz = db.getClass(SERVER_INFO_CLASS);
if (clazz == null) {
clazz = db.createClass(SERVER_INFO_CLASS);
db.createClassIfNotExist(SERVER_INFO_CLASS);
clazz = db.getClass(SERVER_INFO_CLASS);
}
OElement info;
if (clazz.count() == 0) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -369,11 +369,15 @@ default OClass createClassIfNotExist(String className, String... superclasses)
throws OSchemaException {
OSchema schema = getMetadata().getSchema();
schema.reload();

OClass result = schema.getClass(className);
if (result == null) {
result = createClass(className, superclasses);
OClass[] cls = new OClass[superclasses.length];
for (int i = 0; i < superclasses.length; i++) {
OClass superCl = schema.getClass(superclasses[i]);
if (superCl == null) {
throw new OSchemaException("Super class with name '" + superclasses[i] + "' do not exists");
}
cls[i] = superCl;
}
return result;
schema.createClassIfNotExists(className, cls);
return schema.getClass(className);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -42,36 +42,35 @@ public OCreateClassStatement(OrientSql p, int id) {
public OExecutionStream executeDDL(OCommandContext ctx) {

OSchema schema = ctx.getDatabase().getMetadata().getSchema();
if (schema.existsClass(name.getStringValue())) {
String className = name.getStringValue();
if (schema.existsClass(className)) {
if (ifNotExists) {
return OExecutionStream.empty();
} else {
throw new OCommandExecutionException("Class " + name + " already exists");
}
}
checkSuperclasses(schema, ctx);
OClass[] superclasses = getSuperClasses(schema);

OResultInternal result = new OResultInternal();
result.setProperty("operation", "create class");
result.setProperty("className", name.getStringValue());
result.setProperty("className", className);

OClass clazz = null;
OClass[] superclasses = getSuperClasses(schema);
if (abstractClass) {
clazz = schema.createAbstractClass(name.getStringValue(), superclasses);
schema.createAbstractClass(className, superclasses);
result.setProperty("abstract", abstractClass);
} else if (totalClusterNo != null) {
clazz =
schema.createClass(
name.getStringValue(), totalClusterNo.getValue().intValue(), superclasses);
schema.createClass(
className, totalClusterNo.getValue().intValue(), superclasses);
} else if (clusters != null) {
int[] clusterIds = new int[clusters.size()];
for (int i = 0; i < clusters.size(); i++) {
clusterIds[i] = clusters.get(i).getValue().intValue();
}
clazz = schema.createClass(name.getStringValue(), clusterIds, superclasses);
schema.createClass(className, clusterIds, superclasses);
} else {
clazz = schema.createClass(name.getStringValue(), superclasses);
schema.createClass(className, superclasses);
}

return OExecutionStream.singleton(result);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,13 @@ public class OAuditingLoggingThread extends Thread {
private volatile boolean running = true;
private volatile boolean waitForAllLogs = true;
private OrientDBInternal context;
private static final Object onceAtime = new Object();

private String className;
private OSecuritySystem security;

public OAuditingLoggingThread(
final String iDatabaseName,
final BlockingQueue auditingQueue,
final BlockingQueue<ODocument> auditingQueue,
final OrientDBInternal context,
OSecuritySystem security) {
super(
Expand All @@ -61,13 +60,11 @@ public OAuditingLoggingThread(
}

private Void createAuditingClass(ODatabaseSession iArgument) {
synchronized (onceAtime) {
OSchema schema = iArgument.getMetadata().getSchema();
if (!schema.existsClass(className)) {
OClass clazz = schema.getClass(ODefaultAuditing.AUDITING_LOG_CLASSNAME);
OClass cls = schema.createClass(className, clazz);
cls.createIndex(className + ".date", OClass.INDEX_TYPE.NOTUNIQUE, new String[] {"date"});
}
OSchema schema = iArgument.getMetadata().getSchema();
OClass clazz = schema.getClass(ODefaultAuditing.AUDITING_LOG_CLASSNAME);
if (schema.createClassIfNotExists(className, clazz)) {
OClass cls = schema.getClass(className);
cls.createIndex(className + ".date", OClass.INDEX_TYPE.NOTUNIQUE, new String[] {"date"});
}
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -408,10 +408,9 @@ private void createClassIfNotExists() {
sysdb = context.getSystemDatabase().openSystemDatabase();

OSchema schema = sysdb.getMetadata().getSchema();
OClass cls = schema.getClass(AUDITING_LOG_CLASSNAME);

if (cls == null) {
cls = sysdb.getMetadata().getSchema().createClass(AUDITING_LOG_CLASSNAME);
if (sysdb.getMetadata().getSchema().createClassIfNotExists(AUDITING_LOG_CLASSNAME)) {
OClass cls = schema.getClass(AUDITING_LOG_CLASSNAME);
cls.createProperty("date", OType.DATETIME);
cls.createProperty("user", OType.STRING);
cls.createProperty("operation", OType.BYTE);
Expand Down

0 comments on commit 2e6658d

Please sign in to comment.