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

Reply via email to