Hi,
see the attachments, I hope that they can be useful for you
Alessandro
--
---
You received this message because you are subscribed to the Google Groups
"OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.
package aPackage;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class ClassFinder {
public static List<Class<?>> getClassesFromPackage(String pckgname) throws ClassNotFoundException {
ArrayList<Class<?>> result = new ArrayList<Class<?>>();
Set<File> directories = new HashSet<File>();
String oldPackage=pckgname;
pckgname=pckgname.replaceAll("\\.","/");
try {
ClassLoader cld = Thread.currentThread().getContextClassLoader();
if (cld == null) {
throw new ClassNotFoundException("Can’t get class loader.");
}
File directory=null;
Enumeration<URL> resources = cld.getResources(pckgname);
while (resources.hasMoreElements()) {
String path2 = resources.nextElement().getPath();
directory = new File(URLDecoder.decode(path2, "UTF-8"));
directories.add(directory);
}
} catch (NullPointerException x) {
throw new ClassNotFoundException(pckgname+ " does not appear to be a valid package (Null pointer exception)");
} catch (UnsupportedEncodingException encex) {
throw new ClassNotFoundException(pckgname+ " does not appear to be a valid package (Unsupported encoding)");
} catch (IOException ioex) {
throw new ClassNotFoundException("IOException was thrown when trying to get all resources for "+ pckgname);
}
for (File directory : directories) {
if (directory.exists()) {
String[] files = directory.list();
for (String file : files) {
if (file.endsWith(".class")) {
String classForName=oldPackage + "." + file.substring(0, file.length() - 6);
result.add(Class.forName(classForName));
}
}
} else {
throw new ClassNotFoundException(pckgname + "("+ directory.getPath()+ ") does not appear to be a valid package");
}
}
return result;
}
}
package aPackage;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.List;
import com.orientechnologies.orient.client.remote.OServerAdmin;
import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
import com.orientechnologies.orient.core.metadata.schema.OClass;
import com.orientechnologies.orient.core.metadata.schema.OType;
public class Main {
private static String remote = "remote:localhost/";
public static void main(String[] args) {
String nomeDb = "Test";
String path = remote + nomeDb;
String myPackage="com.demo.persistence.model";
OServerAdmin serverAdmin;
try {
serverAdmin = new OServerAdmin(path).connect("root", "root");
if (!serverAdmin.existsDatabase()) {
serverAdmin.createDatabase(nomeDb, "document", "plocal");
ODatabaseDocumentTx db = new ODatabaseDocumentTx(path);
db.open("root", "root");
System.out.println("Creazione database");
List<Class<?>> classes = null;
try {
classes = ClassFinder.getClassesFromPackage(myPackage);
System.out.println(classes.size());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
for (Class<?> myClass : classes) {
OClass myOClass = db.getMetadata().getSchema().createClass(myClass.getSimpleName());
for (Field f : myClass.getDeclaredFields()) {
switch (f.getType().getSimpleName()) {
case "String":
myOClass.createProperty(f.getName(), OType.STRING);
break;
case "int":
case "Integer":
myOClass.createProperty(f.getName(), OType.INTEGER);
break;
case "float":
myOClass.createProperty(f.getName(), OType.FLOAT);
break;
case "double":
myOClass.createProperty(f.getName(), OType.DOUBLE);
break;
case "long":
myOClass.createProperty(f.getName(), OType.LONG);
break;
case "short":
myOClass.createProperty(f.getName(), OType.SHORT);
break;
case "byte":
myOClass.createProperty(f.getName(), OType.BYTE);
break;
case "boolean":
myOClass.createProperty(f.getName(), OType.BOOLEAN);
break;
default:
break;
}
}
}
db.close();
}
serverAdmin.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}