use of com.ramussoft.jdbc.JDBCTemplate 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.jdbc.JDBCTemplate in project ramus by Vitaliy-Yakovchuk.
the class EngineFactory method createTemplate.
private void createTemplate() {
try {
template = new JDBCTemplate(createConnection());
try {
template.executeResource("/com/ramussoft/jdbc/database.sql", "ramus_");
} catch (Exception e) {
}
try {
template.executeResource("/com/ramussoft/jdbc/update1.sql", "ramus_");
} catch (Exception e) {
}
try {
template.executeResource("/com/ramussoft/jdbc/update2.sql", "ramus_");
} catch (Exception e) {
}
try {
template.executeResource("/com/ramussoft/jdbc/update3.sql", "ramus_");
} catch (Exception e) {
}
try {
template.executeResource("/com/ramussoft/jdbc/update4.sql", "ramus_");
} catch (Exception e) {
}
/*try {
template.executeResource("/com/ramussoft/jdbc/update5.sql",
"ramus_");
} catch (Exception e) {
e.printStackTrace();
}*/
try {
template.executeResource("/com/ramussoft/server/create.sql");
} catch (Exception e) {
}
try {
template.executeResource("/com/ramussoft/server/create2.sql");
} catch (Exception e) {
}
try {
template.executeResource("/com/ramussoft/server/create-log.sql", "ramus_");
} catch (Exception e) {
}
journaledEngine = createJournaledEngine(new DirectoryJournalFactory(null));
} catch (Exception e) {
if (e instanceof RuntimeException)
throw (RuntimeException) e;
throw new RuntimeException(e);
}
}
use of com.ramussoft.jdbc.JDBCTemplate in project ramus by Vitaliy-Yakovchuk.
the class EvalPlugin method init.
@Override
public void init(final Engine engine, AccessRules rules) {
super.init(engine, rules);
Qualifier qualifier = StandardAttributesPlugin.getQualifiersQualifier(engine);
engine.setPluginProperty(getName(), "Plugin", this);
function = getFunction(qualifier);
if (function == null) {
function = engine.createSystemAttribute(new AttributeType(EVAL, "Function", false));
function.setName(FUNCTION_ATTRIBUTE);
engine.updateAttribute(function);
qualifier.getSystemAttributes().add(function);
engine.updateQualifier(qualifier);
}
functionDependences = engine.getSystemQualifier(QUALIFIER_EVAL_FUNCTION_DEPENDENCES);
if (functionDependences == null) {
createEvalObjects(engine);
} else {
functionDependence = engine.getSystemAttribute(ATTRIBUTE_EVAL_FUNCTION_DEPENDENCE);
functionDependenceQualifier = engine.getSystemAttribute(ATTRIBUTE_EVAL_DEPENDENCE_QUALIFIER);
functionDependenceAttribute = engine.getSystemAttribute(ATTRIBUTE_EVAL_DEPENDENCE_ATTRIBUTE);
functionDependenceSourceAttribute = engine.getSystemAttribute(ATTRIBUTE_EVAL_FUNCTION_DEPENDENCE_SOURCE_ATTRIBUTE);
}
if (!StandardAttributesPlugin.isDisableAutoupdate(engine)) {
final Util util = Util.getUtils(engine);
util.getScriptHolders().addFunctionsChangeListener(new FunctionsChangeListener() {
@SuppressWarnings("unchecked")
@Override
public void functionsChanged(FunctionsChangeEvent event) {
IEngine iEngine = engine.getDeligate();
if ((iEngine != null) && (iEngine instanceof IEngineImpl)) {
JDBCTemplate template = ((IEngineImpl) iEngine).getTemplate();
String prefix = ((IEngineImpl) iEngine).getPrefix();
for (String function : event.getFunctionNames()) {
List<FunctionPersistent> list = template.query("SELECT function, qualifier_attribute_id, qualifier_table_attribute_id, autochange, attribute_id, element_id FROM " + prefix + "attribute_functions WHERE function LIKE ? AND autochange=1", new RowMapper() {
@Override
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
FunctionPersistent persistent = new FunctionPersistent(rs.getString(1), rs.getLong(2), rs.getLong(3), rs.getInt(4));
persistent.setAttributeId(rs.getLong(5));
persistent.setElementId(rs.getLong(6));
return persistent;
}
}, new Object[] { "%" + function + "%" }, true);
for (FunctionPersistent fp : list) {
recalculateQualifierAttribute(engine, StandardAttributesPlugin.getQualifier(engine, engine.getElement(fp.getElementId())), util, fp);
}
}
}
for (String function : event.getFunctionNames()) {
for (CalculateInfo info : engine.findCalculateInfos("%" + function + "%", true)) {
recalculate(engine, info);
}
}
}
});
engine.addElementAttributeListener(null, new ElementAttributeListener() {
@SuppressWarnings("unchecked")
@Override
public void attributeChanged(AttributeEvent event) {
if (event.isJournaled())
return;
if (DISABLE_RECALC)
return;
if (event.getElement() == null) {
IEngine d = engine.getDeligate();
List<Element> allElements = null;
if ((d != null) && (d instanceof IEngineImpl)) {
JDBCTemplate template = ((IEngineImpl) d).getTemplate();
String prefix = ((IEngineImpl) d).getPrefix();
allElements = template.query("SELECT * FROM " + prefix + "elements WHERE qualifier_id in\n" + "(SELECT qualifier_id FROM " + prefix + "qualifiers_attributes WHERE attribute_id=?)", new RowMapper() {
@Override
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
return new Element(rs.getLong("element_id"), rs.getLong("qualifier_id"), rs.getString("element_name"));
}
}, new Object[] { event.getAttribute().getId() }, true);
} else {
Attribute attribute = event.getAttribute();
allElements = new ArrayList<Element>();
for (Qualifier qualifier : engine.getQualifiers()) {
if (qualifier.getAttributes().indexOf(attribute) >= 0) {
allElements.addAll(engine.getElements(qualifier.getId()));
}
}
}
Attribute attribute = event.getAttribute();
for (Element element : allElements) {
recalculateElement(engine, new AttributeEvent(engine, element, attribute, null, null));
}
} else
recalculateElement(engine, event);
}
private void recalculateElement(final Engine engine, AttributeEvent event) {
MetaValue metaValue = new MetaValue(event.getElement().getId(), event.getAttribute().getId());
List<MetaValue> metaValueList = hashtable.get(Thread.currentThread());
if (metaValueList == null) {
metaValueList = new ArrayList<MetaValue>();
hashtable.put(Thread.currentThread(), metaValueList);
} else {
if (metaValueList.indexOf(metaValue) >= 0)
return;
}
metaValueList.add(metaValue);
try {
for (CalculateInfo info : engine.getDependences(event.getElement().getId(), event.getAttribute().getId(), true)) {
recalculate(engine, info);
}
List<Element> elements = engine.findElements(functionDependences.getId(), functionDependence, event.getElement().getId());
for (Element e : elements) {
Qualifier qualifier = engine.getQualifier((Long) engine.getAttribute(e, functionDependenceQualifier));
Attribute attribute = engine.getAttribute((Long) engine.getAttribute(e, functionDependenceAttribute));
if ((qualifier != null) && (attribute != null)) {
Element el = StandardAttributesPlugin.getElement(event.getEngine(), qualifier.getId());
if (el != null)
for (Element child : engine.getElements(qualifier.getId())) {
recalculateInQualifier(engine, Util.elementIdToValue(event.getElement().getId(), event.getAttribute().getId()), null, el, child);
}
}
}
Element element = StandardAttributesPlugin.getElement(event.getEngine(), event.getElement().getQualifierId());
if (element == null) {
Qualifier qualifier = engine.getQualifier(event.getElement().getQualifierId());
if (StandardAttributesPlugin.isTableQualifier(qualifier)) {
Element parent = StandardAttributesPlugin.getElementForTableElement(engine, event.getElement());
if (parent == null)
return;
Qualifier main = engine.getQualifier(parent.getQualifierId());
Attribute tableAttribute = null;
for (Attribute attr : main.getAttributes()) {
if (StandardAttributesPlugin.getTableQualifeirName(attr).equals(qualifier.getName())) {
tableAttribute = attr;
break;
}
}
if (tableAttribute == null)
return;
element = StandardAttributesPlugin.getElement(event.getEngine(), parent.getQualifierId());
if (element != null) {
if (event.getAttribute().equals(StandardAttributesPlugin.getTableElementIdAttribute(engine)))
recalculateInQualifier(engine, null, event.getElement(), element, parent);
else
recalculateInQualifier(engine, Util.tableAttributeToValue(tableAttribute.getId(), event.getAttribute().getId()), event.getElement(), element, parent);
}
}
return;
}
recalculateInQualifier(engine, Util.attributeIdToValue(event.getAttribute().getId()), null, element, event.getElement());
} finally {
metaValueList.remove(metaValueList.size() - 1);
}
}
});
engine.addElementListener(null, new ElementAdapter() {
@SuppressWarnings("unchecked")
@Override
public void elementCreated(ElementEvent event) {
if (event.isJournaled())
return;
Element element = StandardAttributesPlugin.getElement(event.getEngine(), event.getNewElement().getQualifierId());
if (element == null) {
return;
}
List<FunctionPersistent> list = getFunctionAttribute(engine, element);
if (list == null)
return;
Util utils = Util.getUtils(engine);
for (FunctionPersistent fp : list) if (fp.getAutochange() != 0) {
Eval eval = new Eval(fp.getFunction());
try {
utils.fillAttributes(eval, engine.getQualifier(event.getNewElement().getQualifierId()), event.getNewElement(), null, null, null, true);
utils.fillResult(fp.getQualifierAttributeId(), eval, event.getNewElement());
} catch (Exception e) {
utils.fillResult(fp.getQualifierAttributeId(), e, event.getNewElement());
if (e instanceof RuntimeException)
throw (RuntimeException) e;
throw new RuntimeException(e);
} finally {
}
}
}
@SuppressWarnings("unchecked")
@Override
public void beforeElementDeleted(final ElementEvent event) {
if ((event.isJournaled()) || (event.getNewElement() != null))
return;
Element oldElement = event.getOldElement();
Qualifier qualifier = engine.getQualifier(oldElement.getQualifierId());
for (Attribute attribute : qualifier.getAttributes()) {
removeAttributeFromCalculateInfo(engine, oldElement, attribute);
CalculateInfo info = engine.getCalculateInfo(oldElement.getId(), attribute.getId());
if (info != null) {
info.setFormula(null);
engine.setCalculateInfo(info);
}
}
List<Element> elements = engine.findElements(functionDependences.getId(), functionDependence, oldElement.getId());
Vector<Long> qualifiers = new Vector<Long>(elements.size());
final String start = Util.ELEMENT_PREFIX + oldElement.getId();
for (Element element : elements) {
Long q = (Long) engine.getAttribute(element, functionDependenceQualifier);
if (qualifiers.indexOf(q) < 0) {
qualifiers.add(q);
Element qElement = StandardAttributesPlugin.getElement(engine, q.longValue());
List<FunctionPersistent> fpl = (List<FunctionPersistent>) engine.getAttribute(qElement, function);
for (FunctionPersistent fp : fpl) {
try {
Eval eval = new Eval(fp.getFunction());
eval.replaceValueNames(new Replacementable() {
@Override
public String getNewName(String oldName) {
if (oldName.startsWith(start))
return "NULL";
return oldName;
}
});
fp.setFunction(eval.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
engine.setAttribute(qElement, function, fpl);
}
// engine.deleteElement(element.getId());
}
}
});
engine.addQualifierListener(new QualifierAdapter() {
@SuppressWarnings("unchecked")
@Override
public void beforeQualifierUpdated(QualifierEvent event) {
List<Attribute> rem = new ArrayList<Attribute>();
for (Attribute a : event.getOldQualifier().getAttributes()) {
if (event.getNewQualifier().getAttributes().indexOf(a) < 0)
rem.add(a);
}
if (rem.size() > 0) {
List<Element> list = engine.getElements(event.getOldQualifier().getId());
for (Attribute attribute : rem) {
for (Element element : list) {
removeAttributeFromCalculateInfo(engine, element, attribute);
CalculateInfo info = engine.getCalculateInfo(element.getId(), attribute.getId());
if (info != null) {
info.setFormula(null);
engine.setCalculateInfo(info);
}
}
List<Element> elements = engine.findElements(functionDependences.getId(), functionDependenceSourceAttribute, attribute.getId());
final String end = Util.ATTRIBUTE_PREFIX + attribute.getId();
for (Element element : elements) {
Long id = (Long) engine.getAttribute(element, functionDependence);
if (engine.getQualifierIdForElement(id) == event.getNewQualifier().getId()) {
Long qId = (Long) engine.getAttribute(element, functionDependenceQualifier);
Element element2 = StandardAttributesPlugin.getElement(engine, qId);
List<FunctionPersistent> fpl = (List<FunctionPersistent>) engine.getAttribute(element2, function);
for (FunctionPersistent fp : fpl) {
Eval eval = new Eval(fp.getFunction());
eval.replaceValueNames(new Replacementable() {
@Override
public String getNewName(String oldName) {
if (oldName.endsWith(end)) {
return "NULL";
}
return oldName;
}
});
fp.setFunction(eval.toString());
}
engine.setAttribute(element2, function, fpl);
}
}
}
}
}
@Override
public void qualifierDeleted(QualifierEvent event) {
Qualifier qualifier = event.getOldQualifier();
for (Element element : engine.findElements(functionDependences.getId(), functionDependenceQualifier, qualifier.getId())) {
engine.deleteElement(element.getId());
}
}
});
Qualifier qq = StandardAttributesPlugin.getQualifiersQualifier(engine);
engine.addElementAttributeListener(qq, new ElementAttributeListener() {
@Override
public void attributeChanged(AttributeEvent event) {
if (event.isJournaled())
return;
if (function.equals(event.getAttribute())) {
recalculateFunctionOfQualifier(engine, event);
}
}
});
engine.addFormulaListener(new FormulaListener() {
@Override
public void formulaChanged(FormulaEvent event) {
if (event.isJournaled())
return;
CalculateInfo info = event.getNewFormula();
recalculate(engine, info);
}
});
}
}
use of com.ramussoft.jdbc.JDBCTemplate in project ramus by Vitaliy-Yakovchuk.
the class OtherElementPlugin method getElementsDeleteStatus.
@SuppressWarnings("unchecked")
@Override
public DeleteStatus getElementsDeleteStatus(long[] elementIds, IEngine aEngine) {
if (!(aEngine instanceof IEngineImpl))
return super.getElementsDeleteStatus(elementIds, aEngine);
IEngineImpl engine = (IEngineImpl) aEngine;
JDBCTemplate template = engine.getTemplate();
String prefix = engine.getPrefix();
String sql = "SELECT element_name, qualifier_name, attribute_name " + "FROM {0}attribute_other_elements a, {0}attributes b, {0}qualifiers c, {0}elements d " + "WHERE other_element in(" + JDBCTemplate.toSqlArray(elementIds) + ") AND a.attribute_id=b.attribute_id AND d.element_id=a.element_id " + "AND d.qualifier_id=c.qualifier_id AND b.attribute_system=false " + "ORDER BY qualifier_name, attribute_name, element_name";
List<String> list = template.query(MessageFormat.format(sql, prefix), new RowMapper() {
@Override
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
String qName = rs.getString(2);
if (qName.startsWith("TableQualifier_"))
qName = "{AttributeType.Core.Table}";
return "<tr><td>" + rs.getString(1) + "</td><td> " + qName + "</td><td> " + rs.getString(3) + "</td></tr>";
}
});
if (list.size() == 0)
return null;
DeleteStatus status = new DeleteStatus();
status.setPluginName("Core");
StringBuffer sb = new StringBuffer();
sb.append("<br>");
sb.append("<table>");
sb.append("<tr><td><b>{AttributeType.Core.OtherElement}</b></td><td><b>{OtherElement.Qualifier}</b></td><td><b>{OtherElement.Attribute}</b></td></tr>");
for (String s : list) {
sb.append(s);
}
sb.append("</table>");
status.setPluginAnswer("{Warning.ElementsUsedAtOtherElements}" + sb.toString());
return status;
}
use of com.ramussoft.jdbc.JDBCTemplate in project ramus by Vitaliy-Yakovchuk.
the class HTTPParser method printRowAttributes.
private void printRowAttributes(final Row row) throws IOException {
Element element = row.getElement();
Qualifier qualifier = dataPlugin.getEngine().getQualifier(element.getQualifierId());
List<Attribute> attributes = qualifier.getAttributes();
for (Attribute attr : attributes) {
if (attr.getId() != qualifier.getAttributeForName()) {
factory.printAttribute(htmlStream, dataPlugin, element, this, attr);
}
}
IEngine deligate = dataPlugin.getEngine().getDeligate();
if (deligate instanceof IEngineImpl) {
final IEngineImpl impl = (IEngineImpl) deligate;
String prefix = impl.getPrefix();
JDBCTemplate template = impl.getTemplate();
List<OtherElementMetadata> list = template.query("SELECT * FROM " + prefix + "attribute_other_elements a WHERE other_element=? AND value_branch_id IN (SELECT branch_id FROM " + prefix + "attributes_data_metadata WHERE attribute_id=a.attribute_id AND element_id=a.element_id)", new RowMapper() {
private Hashtable<Long, Attribute> attrs = new Hashtable<Long, Attribute>();
private Hashtable<Long, Qualifier> qualifiers = new Hashtable<Long, Qualifier>();
@Override
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
OtherElementMetadata metadata = new OtherElementMetadata();
Element element = impl.getElement(rs.getLong("element_id"));
if (element == null)
return null;
metadata.element = element;
metadata.qualifier = getQualifier(element.getQualifierId());
metadata.attribute = getAttribute(rs.getLong("attribute_id"));
return metadata;
}
private Attribute getAttribute(Long id) {
Attribute attribute = attrs.get(id);
if (attribute == null) {
attribute = dataPlugin.getEngine().getAttribute(id);
attrs.put(id, attribute);
}
return attribute;
}
private Qualifier getQualifier(Long id) {
Qualifier qualifier = qualifiers.get(id);
if (qualifier == null) {
qualifier = dataPlugin.getEngine().getQualifier(id);
qualifiers.put(id, qualifier);
}
return qualifier;
}
}, new Object[] { row.getElement().getId() }, true);
boolean print = false;
for (OtherElementMetadata data : list) if (data.isNotSystem()) {
print = true;
break;
}
if (print) {
Collections.sort(list);
htmlStream.println("<table border=1>");
htmlStream.println("<tr>");
htmlStream.print("<td><b>");
htmlStream.print(RES.getString("clasificator"));
htmlStream.print("</b></td>");
htmlStream.print("<td><b>");
htmlStream.print(RES.getString("rowAttribute"));
htmlStream.print("</b></td>");
htmlStream.print("<td><b>");
htmlStream.print(RES.getString("element"));
htmlStream.print("</b></td>");
htmlStream.println("</tr>");
Hashtable<Qualifier, Element> hash = new Hashtable<Qualifier, Element>();
for (OtherElementMetadata data : list) if (data.isNotSystem()) {
Element element2 = hash.get(data.qualifier);
if (element2 == null) {
element2 = StandardAttributesPlugin.getElement(dataPlugin.getEngine(), data.qualifier.getId());
hash.put(data.qualifier, element2);
}
htmlStream.println("<tr>");
htmlStream.print("<td>");
printStartATeg("rows/index.html?id=" + element2.getId());
htmlStream.print(data.qualifier.getName());
printEndATeg();
htmlStream.print("</td>");
htmlStream.print("<td>");
htmlStream.print(data.attribute.getName());
htmlStream.print("</td>");
htmlStream.print("<td>");
printStartATeg("rows/index.html?id=" + data.element.getId());
htmlStream.print(data.element.getName());
printEndATeg();
htmlStream.print("</td>");
htmlStream.println("</tr>");
}
htmlStream.println("</table><br>");
}
}
}
Aggregations