use of org.bimserver.webservices.authorization.SystemAuthorization in project BIMserver by opensourceBIM.
the class CommandLine method run.
@Override
public void run() {
reader = new BufferedReader(new InputStreamReader(System.in));
running = true;
try {
while (running) {
try {
String line = reader.readLine();
if (line == null) {
Thread.sleep(50);
continue;
}
if (line.equalsIgnoreCase("exit")) {
bimServer.stop();
return;
} else if (line.startsWith("dumpmodel")) {
try {
long roid = Long.parseLong(line.substring(9).trim());
DatabaseSession databaseSession = bimServer.getDatabase().createSession();
try {
DownloadDatabaseAction downloadDatabaseAction = new DownloadDatabaseAction(bimServer, databaseSession, AccessMethod.INTERNAL, roid, -1, -1, new SystemAuthorization(1, TimeUnit.HOURS), null);
IfcModelInterface model = downloadDatabaseAction.execute();
LOGGER.info("Model size: " + model.size());
List<IfcWall> walls = model.getAll(IfcWall.class);
List<IfcProject> projects = model.getAll(IfcProject.class);
List<IfcSlab> slabs = model.getAll(IfcSlab.class);
List<IfcWindow> windows = model.getAll(IfcWindow.class);
LOGGER.info("Walls: " + walls.size());
LOGGER.info("Windows: " + windows.size());
LOGGER.info("Projects: " + projects.size());
LOGGER.info("Slabs: " + slabs.size());
} catch (UserException e) {
LOGGER.error("", e);
} catch (BimserverLockConflictException e) {
LOGGER.error("", e);
} catch (BimserverDatabaseException e) {
LOGGER.error("", e);
} finally {
databaseSession.close();
}
} catch (Exception e) {
LOGGER.error("", e);
}
} else if (line.equalsIgnoreCase("dump")) {
LOGGER.info("Dumping all thread's track traces...");
LOGGER.info("");
Map<Thread, StackTraceElement[]> allStackTraces = Thread.getAllStackTraces();
for (Thread t : allStackTraces.keySet()) {
LOGGER.info(t.getName());
StackTraceElement[] stackTraceElements = allStackTraces.get(t);
for (StackTraceElement stackTraceElement : stackTraceElements) {
LOGGER.info("\t" + stackTraceElement.getClassName() + ":" + stackTraceElement.getLineNumber() + "." + stackTraceElement.getMethodName());
}
LOGGER.info("");
}
LOGGER.info("Done printing stack traces");
LOGGER.info("");
Thread.sleep(10000);
} else if (line.equals("migrate")) {
try {
bimServer.getDatabase().getMigrator().migrate();
bimServer.getServerInfoManager().update();
} catch (MigrationException e) {
LOGGER.error("", e);
} catch (InconsistentModelsException e) {
LOGGER.error("", e);
}
} else if (line.equals("clearendpoints")) {
bimServer.getEndPointManager().clear();
} else if (line.startsWith("showall")) {
KeyValueStore keyValueStore = ((Database) bimServer.getDatabase()).getKeyValueStore();
Set<String> allTableNames = keyValueStore.getAllTableNames();
long total = 0;
for (String tableName : allTableNames) {
long size = keyValueStore.count(tableName);
total += size;
if (size != 0) {
LOGGER.info(tableName + " " + size);
}
}
LOGGER.info("total: " + total);
} else {
LOGGER.info("Unknown command");
}
} catch (IOException e) {
LOGGER.error("", e);
}
}
} catch (InterruptedException e) {
}
}
use of org.bimserver.webservices.authorization.SystemAuthorization in project BIMserver by opensourceBIM.
the class AllTests method setup.
private static void setup() {
// Create a config
Path home = Paths.get("tmptestdata/home-" + new Random().nextInt(1000000000));
// Remove the home dir if it's there
if (Files.exists(home)) {
try {
PathUtils.removeDirectoryWithContent(home);
} catch (IOException e) {
e.printStackTrace();
}
}
BimServerConfig config = new BimServerConfig();
config.setHomeDir(home);
config.setStartEmbeddedWebServer(true);
config.setPort(7010);
config.setResourceFetcher(new LocalDevelopmentResourceFetcher(Paths.get("../")));
config.setClassPath(System.getProperty("java.class.path"));
bimServer = new BimServer(config);
try {
bimServer.setEmbeddedWebServer(new EmbeddedWebServer(bimServer, Paths.get("."), false));
// CHANGE THESE TO MATCH YOUR CONFIGURATION
// Path[] pluginDirectories = new Path[]{Paths.get("C:\\Git\\IfcPlugins\\IfcPlugins"), Paths.get("C:\\Git\\IfcOpenShell-BIMserver-plugin")};
// Start it
bimServer.start();
// Load plugins
// LocalDevPluginLoader.loadPlugins(bimServer.getPluginManager(), pluginDirectories);
// Get a client, not using any protocol (direct connection)
BimServerClientInterface client = bimServer.getBimServerClientFactory().create();
// Setup the server
client.getAdminInterface().setup("http://localhost:7010", "Test Name", "Test Description", "noicon", "Administrator", "admin@bimserver.org", "admin");
ServiceMap serviceMap = bimServer.getServiceFactory().get(new SystemAuthorization(1, TimeUnit.HOURS), AccessMethod.INTERNAL);
serviceMap.getSettingsInterface().setCacheOutputFiles(false);
client.disconnect();
client = bimServer.getBimServerClientFactory().create(new UsernamePasswordAuthenticationInfo("admin@bimserver.org", "admin"));
String pluginsString = System.getProperty("plugins");
if (pluginsString != null) {
String[] plugins = pluginsString.split(";");
Path[] paths = new Path[plugins.length];
int i = 0;
for (String p : plugins) {
paths[i++] = Paths.get(p);
}
LocalDevPluginLoader.loadPlugins(bimServer.getPluginManager(), paths);
} else {
LoggerFactory.getLogger(AllTests.class).info("Installing plugins");
client.getPluginInterface().installPluginBundle("http://archiva.logic-labs.nl/repository/snapshots", "org.opensourcebim", "ifcplugins", null, null);
client.getPluginInterface().installPluginBundle("http://archiva.logic-labs.nl/repository/snapshots", "org.opensourcebim", "binaryserializers", null, null);
client.getPluginInterface().installPluginBundle("http://archiva.logic-labs.nl/repository/snapshots", "org.opensourcebim", "ifcopenshellplugin", null, null);
}
client.disconnect();
} catch (Exception e) {
e.printStackTrace();
fail(e.getMessage());
}
}
use of org.bimserver.webservices.authorization.SystemAuthorization in project BIMserver by opensourceBIM.
the class TestInOut method start.
private void start(String[] args) {
BimServerConfig config = new BimServerConfig();
Path homeDir = Paths.get("home");
try {
if (Files.isDirectory(homeDir)) {
PathUtils.removeDirectoryWithContent(homeDir);
}
} catch (IOException e) {
e.printStackTrace();
}
config.setClassPath(System.getProperty("java.class.path"));
config.setHomeDir(homeDir);
config.setPort(8080);
config.setStartEmbeddedWebServer(true);
config.setResourceFetcher(new LocalDevelopmentResourceFetcher(Paths.get("../")));
BimServer bimServer = new BimServer(config);
try {
LocalDevPluginLoader.loadPlugins(bimServer.getPluginManager(), new OptionsParser(args).getPluginDirectories());
bimServer.start();
if (bimServer.getServerInfo().getServerState() == ServerState.NOT_SETUP) {
AdminInterface adminInterface = bimServer.getServiceFactory().get(new SystemAuthorization(1, TimeUnit.HOURS), AccessMethod.INTERNAL).get(AdminInterface.class);
adminInterface.setup("http://localhost:8080", "Administrator", "admin@bimserver.org", "admin", null, null, null);
SettingsInterface settingsInterface = bimServer.getServiceFactory().get(new SystemAuthorization(1, TimeUnit.HOURS), AccessMethod.INTERNAL).get(SettingsInterface.class);
settingsInterface.setCacheOutputFiles(false);
}
BimServerClientInterface client = LocalDevSetup.setupJson("http://localhost:8080");
SProject project = client.getServiceInterface().addProject("test", "ifc2x3tc1");
SDeserializerPluginConfiguration deserializer = client.getServiceInterface().getSuggestedDeserializerForExtension("ifc", project.getOid());
Path inputFile = Paths.get("../TestData/data/AC11-Institute-Var-2-IFC.ifc");
client.checkin(project.getOid(), "test", deserializer.getOid(), false, Flow.SYNC, inputFile);
project = client.getServiceInterface().getProjectByPoid(project.getOid());
SSerializerPluginConfiguration serializer = client.getServiceInterface().getSerializerByContentType("application/ifc");
Path outputFile = Paths.get("output.ifc");
client.download(project.getLastRevisionId(), serializer.getOid(), outputFile);
Diff diff = new Diff(false, false, false, inputFile, outputFile);
diff.start();
} catch (ServerException e) {
e.printStackTrace();
} catch (DatabaseInitException e) {
e.printStackTrace();
} catch (BimserverDatabaseException e) {
e.printStackTrace();
} catch (PluginException e) {
e.printStackTrace();
} catch (DatabaseRestartRequiredException e) {
e.printStackTrace();
} catch (UserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (PublicInterfaceNotFoundException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (CompareException e) {
e.printStackTrace();
} catch (BimServerClientException e) {
e.printStackTrace();
}
}
use of org.bimserver.webservices.authorization.SystemAuthorization in project BIMserver by opensourceBIM.
the class Database method init.
public void init() throws DatabaseInitException, DatabaseRestartRequiredException, InconsistentModelsException {
DatabaseSession databaseSession = createSession();
try {
if (getKeyValueStore().isNew()) {
keyValueStore.createTable(CLASS_LOOKUP_TABLE, null, true);
keyValueStore.createTable(Database.STORE_PROJECT_NAME, null, true);
keyValueStore.createTable(Registry.REGISTRY_TABLE, null, true);
setDatabaseVersion(-1, databaseSession);
created = new Date();
registry.save(DATE_CREATED, created, databaseSession);
} else {
keyValueStore.openTable(databaseSession, CLASS_LOOKUP_TABLE, true);
keyValueStore.openTable(databaseSession, Database.STORE_PROJECT_NAME, true);
keyValueStore.openTable(databaseSession, Registry.REGISTRY_TABLE, true);
created = registry.readDate(DATE_CREATED, databaseSession);
if (created == null) {
created = new Date();
registry.save(DATE_CREATED, created, databaseSession);
}
}
databaseSchemaVersion = registry.readInt(SCHEMA_VERSION, databaseSession, -1);
migrator = new Migrator(this);
if (getKeyValueStore().isNew()) {
try {
migrator.migrate(databaseSession);
} catch (MigrationException e) {
LOGGER.error("", e);
}
registry.save("isnew", true, databaseSession);
databaseSession.commit();
databaseSession.close();
throw new DatabaseRestartRequiredException();
} else if (registry.readBoolean("isnew", true, databaseSession)) {
initInternalStructure(databaseSession);
initCounters(databaseSession);
ServerSettings settings = createDefaultSettings(databaseSession);
databaseSession.store(settings);
new CreateBaseProjectDatabaseAction(databaseSession, AccessMethod.INTERNAL).execute();
AddUserDatabaseAction addUserDatabaseAction = new AddUserDatabaseAction(bimServer, databaseSession, AccessMethod.INTERNAL, "system", "system", "System", UserType.SYSTEM, new SystemAuthorization(1, TimeUnit.HOURS), false, null);
addUserDatabaseAction.setCreateSystemUser();
User systemUser = addUserDatabaseAction.execute();
systemUser.setCreatedBy(systemUser);
databaseSession.store(systemUser);
DatabaseCreated databaseCreated = databaseSession.create(DatabaseCreated.class);
databaseCreated.setAccessMethod(AccessMethod.INTERNAL);
databaseCreated.setExecutor(systemUser);
databaseCreated.setDate(new Date());
databaseCreated.setPath(getKeyValueStore().getLocation());
databaseCreated.setVersion(databaseSchemaVersion);
databaseSession.store(databaseCreated);
registry.save("isnew", false, databaseSession);
} else {
initInternalStructure(databaseSession);
initCounters(databaseSession);
}
for (EClass eClass : cidToEclass) {
if (eClass != null) {
if (eClass.getEPackage() == Ifc2x3tc1Package.eINSTANCE || eClass.getEPackage() == Ifc4Package.eINSTANCE) {
realClasses.add(eClass.getName());
}
}
}
databaseSession.commit();
} catch (UserException e) {
LOGGER.error("", e);
close();
throw new DatabaseInitException(e.getMessage());
} catch (BimserverDatabaseException e) {
LOGGER.error("", e);
close();
throw new DatabaseInitException(e.getMessage());
} catch (DatabaseRestartRequiredException e) {
throw e;
} catch (Exception e) {
throw new DatabaseInitException(e);
} finally {
databaseSession.close();
}
}
use of org.bimserver.webservices.authorization.SystemAuthorization in project BIMserver by opensourceBIM.
the class LocalDevBimServerStarter method start.
public void start(int id, String address, String name, int port, int pbport, Path[] pluginDirectories, Path home) {
BimServerConfig config = new BimServerConfig();
if (home != null) {
config.setHomeDir(home);
} else {
config.setHomeDir(Paths.get("tmptestdata/home" + (id == -1 ? "" : id)));
}
config.setResourceFetcher(new LocalDevelopmentResourceFetcher(Paths.get("../")));
config.setStartEmbeddedWebServer(true);
config.setClassPath(System.getProperty("java.class.path"));
config.setLocalDev(true);
config.setEnvironment(Environment.LOCAL_DEV);
config.setPort(port);
config.setStartCommandLine(true);
config.setDevelopmentBaseDir(Paths.get("../BimServer"));
try {
fixLogging(config);
} catch (IOException e1) {
e1.printStackTrace();
}
bimServer = new BimServer(config);
bimServer.getVersionChecker().getLocalVersion().setDate(new Date());
bimServer.setEmbeddedWebServer(new EmbeddedWebServer(bimServer, config.getDevelopmentBaseDir(), config.isLocalDev()));
Logger LOGGER = LoggerFactory.getLogger(LocalDevBimServerStarter.class);
try {
bimServer.start();
if (bimServer.getServerInfo().getServerState() == ServerState.MIGRATION_REQUIRED) {
bimServer.getServerInfoManager().registerStateChangeListener(new StateChangeListener() {
@Override
public void stateChanged(ServerState oldState, ServerState newState) {
if (oldState == ServerState.MIGRATION_REQUIRED && newState == ServerState.RUNNING) {
try {
LocalDevPluginLoader.loadPlugins(bimServer.getPluginManager(), pluginDirectories);
} catch (PluginException e) {
LOGGER.error("", e);
}
}
}
});
} else if (bimServer.getServerInfo().getServerState() == ServerState.RUNNING || bimServer.getServerInfo().getServerState() == ServerState.NOT_SETUP) {
LocalDevPluginLoader.loadPlugins(bimServer.getPluginManager(), pluginDirectories);
try {
AdminInterface adminInterface = bimServer.getServiceFactory().get(new SystemAuthorization(1, TimeUnit.HOURS), AccessMethod.INTERNAL).get(AdminInterface.class);
adminInterface.setup("http://localhost:" + port, name, "My Description", "http://localhost:" + port + "/img/bimserver.png", "Administrator", "admin@bimserver.org", "admin");
SettingsInterface settingsInterface = bimServer.getServiceFactory().get(new SystemAuthorization(1, TimeUnit.HOURS), AccessMethod.INTERNAL).get(SettingsInterface.class);
settingsInterface.setCacheOutputFiles(false);
settingsInterface.setPluginStrictVersionChecking(false);
} catch (Exception e) {
// Ignore
}
bimServer.activateServices();
} else {
LOGGER.error("BIMserver did not startup correctly");
}
} catch (PluginException e) {
LOGGER.error("", e);
} catch (ServiceException e) {
LOGGER.error("", e);
} catch (DatabaseInitException e) {
LOGGER.error("", e);
} catch (BimserverDatabaseException e) {
LOGGER.error("", e);
} catch (DatabaseRestartRequiredException e) {
LOGGER.error("", e);
}
}
Aggregations