use of com.ramussoft.common.PluginProvider in project ramus by Vitaliy-Yakovchuk.
the class EngineConnection method init.
public void init(String[] args) throws Exception {
try {
try {
Class.forName("org.postgresql.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
java.sql.Connection jdbcConnection = null;
Properties ps = EngineFactory.getPropeties();
if (ps != null) {
try {
Class.forName(ps.getProperty("driver"));
jdbcConnection = DriverManager.getConnection(ps.getProperty("url"), ps.getProperty("user"), ps.getProperty("password"));
} catch (Exception e) {
e.printStackTrace();
}
}
if (jdbcConnection == null)
jdbcConnection = DriverManager.getConnection("jdbc:postgresql://127.0.0.1/ramus_public", "postgres", "postgres");
template = new JDBCTemplate(jdbcConnection);
userFactory = new UserFactoryImpl(template);
JDBCTemplate template = new JDBCTemplate(jdbcConnection);
String password = template.queryForObjects("SELECT \"password\" FROM users WHERE \"login\"=?", new RowMapper() {
@Override
public Object mapRow(ResultSet rs, int index) throws SQLException {
return rs.getString(1);
}
}, new Object[] { "admin" }, true).toString().trim();
connection = new TcpClientConnection("127.0.0.1", Metadata.TCP_PORT) {
@Override
protected void objectReaded(Object object) {
if (tcpClientEngine != null)
tcpClientEngine.call((EvenstHolder) object);
}
};
connection.start();
connection.invoke("login", new Object[] { "admin", password });
tcpClientEngine = new TcpClientEngine((EngineInvocker) Proxy.newProxyInstance(getClass().getClassLoader(), new Class[] { EngineInvocker.class }, new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
return connection.invoke(method.getName(), args);
}
}), connection);
List<Class> interfaces = new ArrayList<Class>();
interfaces.add(Engine.class);
interfaces.add(Journaled.class);
List<PluginProvider> suits = new ArrayList<PluginProvider>();
suits.add(new SimpleAttributePluginSuit());
initAdditionalPluginSuits(suits);
PluginFactory factory = createPluginFactory(suits);
for (Plugin plugin : factory.getPlugins()) if (plugin.getFunctionalInterface() != null)
interfaces.add(plugin.getFunctionalInterface());
final Engine engine1 = (Engine) Proxy.newProxyInstance(getClass().getClassLoader(), interfaces.toArray(new Class[interfaces.size()]), tcpClientEngine);
// new CachedEngine(engine1);
final Engine cachedEngine = engine1;
final Hashtable<Method, Object> hashtable = new Hashtable<Method, Object>();
for (Method m : Engine.class.getMethods()) {
hashtable.put(m, cachedEngine);
}
for (Method m : Cached.class.getMethods()) {
hashtable.put(m, cachedEngine);
}
interfaces.add(Cached.class);
Engine engine = (Engine) Proxy.newProxyInstance(getClass().getClassLoader(), interfaces.toArray(new Class[interfaces.size()]), new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Object o = hashtable.get(method);
if (o == null)
return tcpClientEngine.invoke(proxy, method, args);
return method.invoke(o, args);
}
});
tcpClientEngine.setEngine(engine);
for (Plugin plugin : factory.getPlugins()) plugin.init(engine, rules);
rules = (AccessRules) createDeligate(AccessRules.class);
this.engine = engine;
} catch (Exception e) {
e.printStackTrace();
}
}
use of com.ramussoft.common.PluginProvider in project ramus by Vitaliy-Yakovchuk.
the class EngineConnection method createPluginFactory.
private PluginFactory createPluginFactory(List<PluginProvider> list) {
ArrayList<Plugin> plugins = new ArrayList<Plugin>();
for (PluginProvider suit : list) {
plugins.addAll(suit.getPlugins());
}
PluginFactory factory = new PluginFactory(plugins);
return factory;
}
use of com.ramussoft.common.PluginProvider in project ramus by Vitaliy-Yakovchuk.
the class BaseExporter method export.
/**
* @param args
* @throws IOException
*/
public void export(final File file) throws IOException {
MemoryDatabase database = new MemoryDatabase() {
@Override
protected Collection<? extends PluginProvider> getAdditionalSuits() {
ArrayList<PluginProvider> ps = new ArrayList<PluginProvider>(1);
ps.add(new IDEF0PluginProvider());
return ps;
}
@Override
protected File getFile() {
return null;
}
@Override
public Connection createConnection() throws SQLException {
return EngineFactory.createNewConnection();
}
@Override
protected String getJournalDirectoryName(String tmp) {
return null;
}
@Override
protected FileIEngineImpl createFileIEngine(PluginFactory factory) throws ClassNotFoundException, ZipException, IOException {
return new FileIEngineImpl(0, template, factory, null);
}
};
Engine s = database.getEngine(null);
FileIEngineImpl impl = (FileIEngineImpl) s.getDeligate();
EngineFactory factory = new EngineFactory();
IEngine d = factory.getEngine();
ZipOutputStream out = impl.saveToFileNotCloseFile(file);
for (String streamName : d.getStreamNames()) {
byte[] bs = d.getStream(streamName);
if (bs == null) {
} else {
if (streamName.startsWith("/"))
streamName = streamName.substring(1);
out.putNextEntry(new ZipEntry(streamName));
out.write(bs);
}
}
out.close();
try {
factory.getTemplate().getConnection().close();
impl.getConnection().close();
} catch (Exception e) {
e.printStackTrace();
}
}
use of com.ramussoft.common.PluginProvider in project ramus by Vitaliy-Yakovchuk.
the class Runner method recoverySession.
public boolean recoverySession(final String sessionPath, final File sourceFile) {
Window rFrame = new Window(null);
String recovering = GlobalResourcesManager.getString("File.Recovering");
rFrame.add(new Label(MessageFormat.format(recovering, ((sourceFile == null) ? GlobalResourcesManager.getString("Session.NoName") : sourceFile.getName()))));
rFrame.pack();
rFrame.setLocationRelativeTo(null);
rFrame.setVisible(true);
final String s = sessionPath + File.separator + "source.rms";
MemoryDatabase database = new MemoryDatabase() {
@Override
protected Collection<? extends PluginProvider> getAdditionalSuits() {
ArrayList<PluginProvider> ps = new ArrayList<PluginProvider>(1);
initAdditionalPluginSuits(ps);
return ps;
}
@Override
protected File getFile() {
File file = new File(s);
if (file.exists())
return file;
return null;
}
protected FileIEngineImpl createFileIEngine(PluginFactory factory) throws ClassNotFoundException, ZipException, IOException {
return new FileIEngineImpl(0, template, factory, sessionPath);
}
};
final Engine engine = database.getEngine(null);
DirectoryJournalFactory factory = database.getJournalFactory();
Journal[] journals = factory.loadJournals(database.getJournaledEngine());
if (journals.length == 0)
return false;
boolean exist = false;
Journal.RedoCallback redoCallback = new Journal.RedoCallback() {
boolean hadStartUserTransaction;
@Override
public boolean execute(Command command) {
if (command instanceof StartUserTransactionCommand) {
hadStartUserTransaction = true;
}
return hadStartUserTransaction;
}
};
for (Journal journal : journals) {
try {
Command command = null;
while (journal.canRedo()) {
command = journal.redo(redoCallback);
}
if ((journal.getPointer() == 0l) || (command instanceof StopUndoPointCommand)) {
rFrame.setVisible(false);
continue;
} else
exist = true;
if (!(command instanceof EndUserTransactionCommand))
throw new Exception();
} catch (Exception e) {
e.printStackTrace();
while (journal.canUndo()) {
if (journal.undo() instanceof StartUserTransactionCommand)
break;
}
}
}
if (!exist) {
try {
((FileIEngineImpl) engine.getDeligate()).close();
for (Journal journal : journals) journal.close();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
((FileIEngineImpl) engine.getDeligate()).recoveryStreams();
engine.setPluginProperty(CORE, "Changed", Boolean.TRUE);
engine.setActiveBranch(-1l);
final AccessRules accessor = database.getAccessRules(null);
rFrame.setVisible(false);
Runnable runnable = new Runnable() {
@Override
public void run() {
SplashScreen screen = new SplashScreen() {
/**
*/
private static final long serialVersionUID = -2727237354089088151L;
@Override
protected String getImageName() {
return Runner.this.getSplashImageName();
}
};
screen.setLocationRelativeTo(null);
screen.setVisible(true);
final JFrame frame = openInNewWindows(engine, accessor, sourceFile, true);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
String recovered = GlobalResourcesManager.getString("File.Recovered");
frame.setTitle(frame.getTitle() + " " + recovered);
}
});
screen.setVisible(false);
}
};
recoveredCount++;
Thread thread = new Thread(runnable);
thread.start();
return true;
}
use of com.ramussoft.common.PluginProvider in project ramus by Vitaliy-Yakovchuk.
the class Runner method createDatabase.
public MemoryDatabase createDatabase(final File file) {
MemoryDatabase database = new MemoryDatabase(true) {
@Override
protected Collection<? extends PluginProvider> getAdditionalSuits() {
ArrayList<PluginProvider> ps = new ArrayList<PluginProvider>(1);
initAdditionalPluginSuits(ps);
return ps;
}
@Override
protected File getFile() {
return file;
}
};
return database;
}
Aggregations