1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
package test;
import plc.*;
// pour les exceptions de apache
//import org.apache.commons.exception.NestableRuntimeException;
// pour l'utilisation de collection et d'iterator
import java.util.*;
// pour la persistence (broker)
import org.apache.ojb.broker.*;
import org.apache.ojb.broker.query.*;
import java.sql.*;
public class TestPLCDatabase {
private static PersistenceBroker broker = null;
public static void main(String[] args) {
// 1) creer un objet et le rendre persistent
Plc plc = new Plc();
// on renseigne qq attributs
plc.setMacAddress("00:00:00:00:00:00");
plc.setIpAddress("137.138.49.233");
plc.setPort(80);
// enregistrement ds la base
storePLC(plc);
//-------------------------
// 2) mise a jour d'un objet existant
updatePLC(plc);
//-------------------------
// 3) effectuer des requetes sur la base et exploiter le resultat
try {
broker = PersistenceBrokerFactory.defaultPersistenceBroker();
}
catch(Throwable t) {
t.printStackTrace();
}
/*
* Il faut debuter une transaction avant chaque acces a la base
* en vue de respecter les conditions A.C.I.D d'une base
*/
try {
broker.beginTransaction();
System.out.println("Transaction");
}
catch(Exception e) {
System.out.println("Impossible de commencer la transaction : "+e);
}
// creation de critere de requete
Criteria crit = new Criteria();
// ????????????????
crit.addEqualTo("port", new Integer(80));
crit.addEqualTo("rack", new Integer(0));
crit.addEqualTo("initialValidity", "today");
// ????????????????
// creation de la requete
Query q = new QueryByCriteria(Plc.class, crit);
// execution de la requete
try {
Collection results = broker.getCollectionByQuery(q);
Iterator iter = results.iterator();
while(iter.hasNext()) {
Plc tmp = (Plc)iter.next();
System.out.println("Ip : "+tmp.getIpAddress());
System.out.println("port : "+tmp.getPort());
System.out.println("rack : "+tmp.getRack());
}
}
catch(Exception e) {
System.out.println("Exception 2 : "+e);
}
finally {
if(broker != null) broker.close();
}
// commit de la transaction pour liberer la base
broker.commitTransaction();
}
public static void storePLC(Plc toStore) {
PersistenceBroker broker = null;
try {
System.out.println("coucou1");
broker = PersistenceBrokerFactory.defaultPersistenceBroker();
System.out.println("coucou2");
broker.beginTransaction();
broker.store(toStore);
broker.commitTransaction();
}
catch(PersistenceBrokerException e) {
if(broker != null) broker.abortTransaction();
System.out.println("Exception : " + e);
}
finally {
if(broker != null) broker.close();
}
}
public static void updatePLC(Plc toUpdate) {
PersistenceBroker broker = null;
try {
broker = PersistenceBrokerFactory.defaultPersistenceBroker();
QueryByCriteria query = new QueryByCriteria(toUpdate);
Plc result = (Plc)broker.getObjectByQuery(query);
if(result != null) {
broker.beginTransaction();
result.setRack(0);
result.setSlot(2);
broker.store(result);
broker.commitTransaction();
}
}
catch(PersistenceBrokerException e) {
if(broker != null) broker.abortTransaction();
System.out.println("Exception : " + e);
}
finally {
if(broker != null) broker.close();
}
}
} |