Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 061842cb authored by Jérôme Euzenat's avatar Jérôme Euzenat
Browse files

- added storage for EDOAL Aggregate (affects Apply)

- moved to VERSION 4.8
parent 95436188
No related branches found
No related tags found
No related merge requests found
...@@ -80,6 +80,7 @@ import fr.inrialpes.exmo.align.impl.edoal.Transformation; ...@@ -80,6 +80,7 @@ import fr.inrialpes.exmo.align.impl.edoal.Transformation;
import fr.inrialpes.exmo.align.impl.edoal.ValueExpression; import fr.inrialpes.exmo.align.impl.edoal.ValueExpression;
import fr.inrialpes.exmo.align.impl.edoal.Value; import fr.inrialpes.exmo.align.impl.edoal.Value;
import fr.inrialpes.exmo.align.impl.edoal.Apply; import fr.inrialpes.exmo.align.impl.edoal.Apply;
import fr.inrialpes.exmo.align.impl.edoal.Aggregate;
import fr.inrialpes.exmo.align.impl.edoal.Datatype; import fr.inrialpes.exmo.align.impl.edoal.Datatype;
import fr.inrialpes.exmo.align.impl.edoal.EDOALCell; import fr.inrialpes.exmo.align.impl.edoal.EDOALCell;
import fr.inrialpes.exmo.align.impl.edoal.EDOALVisitor; import fr.inrialpes.exmo.align.impl.edoal.EDOALVisitor;
...@@ -155,6 +156,7 @@ public class EDOALSQLCache { ...@@ -155,6 +156,7 @@ public class EDOALSQLCache {
public static final int PROPERTY = 6; public static final int PROPERTY = 6;
public static final int CLASS = 7; public static final int CLASS = 7;
public static final int REST = 8; public static final int REST = 8;
public static final int AGGREGATE = 4;
public EDOALSQLCache( DBService serv ) { public EDOALSQLCache( DBService serv ) {
service = serv; service = serv;
...@@ -790,7 +792,8 @@ public class EDOALSQLCache { ...@@ -790,7 +792,8 @@ public class EDOALSQLCache {
if ( type == INSTANCE ) return extractInstanceExpression( rs.getLong( "joinid" ) ); if ( type == INSTANCE ) return extractInstanceExpression( rs.getLong( "joinid" ) );
else if ( type == VALUE ) return extractValue( rs.getLong( "joinid" ) ); else if ( type == VALUE ) return extractValue( rs.getLong( "joinid" ) );
else if ( type == PATH ) return extractPathExpression( rs.getLong( "joinid" ) ); else if ( type == PATH ) return extractPathExpression( rs.getLong( "joinid" ) );
else if ( type == APPLY ) return extractApply( rs.getLong( "joinid" ) ); else if ( type == APPLY ) return extractApply( rs.getLong( "joinid" ), 0 );
else if ( type == AGGREGATE ) return extractApply( rs.getLong( "joinid" ), 1 );
else throw new AlignmentException( "Unknown ValueExpression type "+type ); else throw new AlignmentException( "Unknown ValueExpression type "+type );
} else { } else {
throw new AlignmentException( "Cannot retrieve value expression "+intid ); throw new AlignmentException( "Cannot retrieve value expression "+intid );
...@@ -813,6 +816,9 @@ public class EDOALSQLCache { ...@@ -813,6 +816,9 @@ public class EDOALSQLCache {
} else if ( e instanceof Apply ) { } else if ( e instanceof Apply ) {
idres = visit( (Apply)e ); idres = visit( (Apply)e );
type = APPLY; type = APPLY;
} else if ( e instanceof Aggregate ) {
idres = visit( (Aggregate)e );
type = AGGREGATE;
} else throw new AlignmentException( "Unknown ValueExpression "+e ); } else throw new AlignmentException( "Unknown ValueExpression "+e );
return registerExpression( "valueexpr", type, idres ); return registerExpression( "valueexpr", type, idres );
} }
...@@ -887,7 +893,7 @@ public class EDOALSQLCache { ...@@ -887,7 +893,7 @@ public class EDOALSQLCache {
} }
// (play with NULL) // (play with NULL)
public Apply extractApply( long intid ) throws SQLException, AlignmentException { public ValueExpression extractApply( long intid, int type ) throws SQLException, AlignmentException {
try ( Statement st = service.getConnection().createStatement() ) { try ( Statement st = service.getConnection().createStatement() ) {
ResultSet rs = st.executeQuery( "SELECT operation FROM apply WHERE intid='"+intid+"'" ); ResultSet rs = st.executeQuery( "SELECT operation FROM apply WHERE intid='"+intid+"'" );
if ( rs.next() ) { if ( rs.next() ) {
...@@ -899,7 +905,11 @@ public class EDOALSQLCache { ...@@ -899,7 +905,11 @@ public class EDOALSQLCache {
while ( rs2.next() ) { while ( rs2.next() ) {
args.add( extractValueExpression( rs2.getLong( "id" ) ) ); args.add( extractValueExpression( rs2.getLong( "id" ) ) );
} }
return new Apply( opuri, args ); if ( type == 0 ) {
return new Apply( opuri, args );
} else {
return new Aggregate( opuri, args );
}
} }
} catch ( URISyntaxException urisex ) { } catch ( URISyntaxException urisex ) {
throw new AlignmentException( "Invalid operation URI", urisex ); throw new AlignmentException( "Invalid operation URI", urisex );
...@@ -912,7 +922,26 @@ public class EDOALSQLCache { ...@@ -912,7 +922,26 @@ public class EDOALSQLCache {
// Get the constructor // Get the constructor
final URI op = e.getOperation(); final URI op = e.getOperation();
// Create the relexpr // Create the relexpr
try ( PreparedStatement st2 = createInsertStatement( "INSERT INTO apply (operation) VALUES (?)" ) ) { try ( PreparedStatement st2 = createInsertStatement( "INSERT INTO apply (type,operation) VALUES (0,?)" ) ) {
st2.setString( 1, op.toString() );
long exprres = executeUpdateWithId( st2, "apply" );
// Iterate on arguments
try ( Statement st = service.getConnection().createStatement() ) {
for ( final ValueExpression ve : e.getArguments() ) {
long pres = visit( ve );
st.executeUpdate( "INSERT INTO arglist (intid,id) VALUES ('"+exprres+"','"+pres+"')" );
}
}
// Return the expr
return exprres;
}
}
public long visit( final Aggregate e ) throws SQLException, AlignmentException {
// Get the constructor
final URI op = e.getOperation();
// Create the relexpr
try ( PreparedStatement st2 = createInsertStatement( "INSERT INTO apply (type,operation) VALUES (1,?)" ) ) {
st2.setString( 1, op.toString() ); st2.setString( 1, op.toString() );
long exprres = executeUpdateWithId( st2, "apply" ); long exprres = executeUpdateWithId( st2, "apply" );
// Iterate on arguments // Iterate on arguments
......
...@@ -76,7 +76,7 @@ public class SQLCache extends VolatilCache implements Cache { ...@@ -76,7 +76,7 @@ public class SQLCache extends VolatilCache implements Cache {
String port = null; String port = null;
int rights = 1; // writing rights in the database (default is 1) int rights = 1; // writing rights in the database (default is 1)
final int VERSION = 472; // Version of the API to be stored in the database final int VERSION = 480; // Version of the API to be stored in the database
/* 300: initial database format /* 300: initial database format
301: ADDED alignment id as primary key 301: ADDED alignment id as primary key
302: ALTERd cached/stored/ouri tag forms 302: ALTERd cached/stored/ouri tag forms
...@@ -99,8 +99,8 @@ public class SQLCache extends VolatilCache implements Cache { ...@@ -99,8 +99,8 @@ public class SQLCache extends VolatilCache implements Cache {
// URIINdex: // URIINdex:
ADDED multiple uris for alignments (?) ADDED multiple uris for alignments (?)
CHANGED the alext namespace CHANGED the alext namespace
471: ADDED management of EDOAL alignments 480: ADDED management of EDOAL alignments
472: ADDED reltype and conftype to Alignment table ADDED reltype and conftype to Alignment table
*/ */
DBService service = null; DBService service = null;
...@@ -970,6 +970,7 @@ public class SQLCache extends VolatilCache implements Cache { ...@@ -970,6 +970,7 @@ public class SQLCache extends VolatilCache implements Cache {
CREATE TABLE apply ( CREATE TABLE apply (
intid BIGINT NOT NULL AUTO_INCREMENT, intid BIGINT NOT NULL AUTO_INCREMENT,
type INT,
operation VARCHAR(255), operation VARCHAR(255),
PRIMARY KEY (intid)) PRIMARY KEY (intid))
...@@ -1142,7 +1143,7 @@ public class SQLCache extends VolatilCache implements Cache { ...@@ -1142,7 +1143,7 @@ public class SQLCache extends VolatilCache implements Cache {
st.executeUpdate("CREATE TABLE instexpr (intid "+SERIAL+", uri VARCHAR(250), var VARCHAR(250), PRIMARY KEY (intid))"); st.executeUpdate("CREATE TABLE instexpr (intid "+SERIAL+", uri VARCHAR(250), var VARCHAR(250), PRIMARY KEY (intid))");
st.executeUpdate("CREATE TABLE literal (intid "+SERIAL+", type BIGINT, value VARCHAR(500), PRIMARY KEY (intid))"); st.executeUpdate("CREATE TABLE literal (intid "+SERIAL+", type BIGINT, value VARCHAR(500), PRIMARY KEY (intid))");
st.executeUpdate("CREATE TABLE typeexpr (intid "+SERIAL+", uri VARCHAR(250), PRIMARY KEY (intid))"); st.executeUpdate("CREATE TABLE typeexpr (intid "+SERIAL+", uri VARCHAR(250), PRIMARY KEY (intid))");
st.executeUpdate("CREATE TABLE apply (intid "+SERIAL+", operation VARCHAR(255), PRIMARY KEY (intid))"); st.executeUpdate("CREATE TABLE apply (intid "+SERIAL+", type INT, operation VARCHAR(255), PRIMARY KEY (intid))");
st.executeUpdate("CREATE TABLE arglist (intid BIGINT NOT NULL, id BIGINT NOT NULL)"); st.executeUpdate("CREATE TABLE arglist (intid BIGINT NOT NULL, id BIGINT NOT NULL)");
st.executeUpdate("CREATE TABLE classexpr (intid "+SERIAL+", type INT, joinid BIGINT, var VARCHAR(250), PRIMARY KEY (intid))"); st.executeUpdate("CREATE TABLE classexpr (intid "+SERIAL+", type INT, joinid BIGINT, var VARCHAR(250), PRIMARY KEY (intid))");
st.executeUpdate("CREATE TABLE classid (intid "+SERIAL+", uri VARCHAR(250), PRIMARY KEY (intid))"); st.executeUpdate("CREATE TABLE classid (intid "+SERIAL+", uri VARCHAR(250), PRIMARY KEY (intid))");
...@@ -1446,13 +1447,10 @@ public class SQLCache extends VolatilCache implements Cache { ...@@ -1446,13 +1447,10 @@ public class SQLCache extends VolatilCache implements Cache {
st2.executeUpdate("UPDATE extension SET uri='"+Namespace.ALIGNMENT.uri+"#' WHERE uri='"+Namespace.ALIGNMENT.uri+"'"); st2.executeUpdate("UPDATE extension SET uri='"+Namespace.ALIGNMENT.uri+"#' WHERE uri='"+Namespace.ALIGNMENT.uri+"'");
st2.executeUpdate("UPDATE extension SET uri='"+Namespace.EXT.uri+"' WHERE uri='"+Namespace.ALIGNMENT.uri+"#' AND (tag='time' OR tag='method' OR tag='pretty')"); st2.executeUpdate("UPDATE extension SET uri='"+Namespace.EXT.uri+"' WHERE uri='"+Namespace.ALIGNMENT.uri+"#' AND (tag='time' OR tag='method' OR tag='pretty')");
} }
if ( version < 471 ) { if ( version < 480 ) {
logger.info("Upgrading to version 4.71"); logger.info("Upgrading to version 4.8");
logger.info("Creating EDOAL tables"); logger.info("Creating EDOAL tables");
initEDOALTables( createStatement() ); initEDOALTables( createStatement() );
}
if ( version < 472 ) {
logger.info("Upgrading to version 4.72");
logger.info("Adding reltype attribute"); logger.info("Adding reltype attribute");
st.executeUpdate("ALTER TABLE alignment ADD reltype VARCHAR(255);"); st.executeUpdate("ALTER TABLE alignment ADD reltype VARCHAR(255);");
st.executeUpdate("ALTER TABLE alignment ADD conftype VARCHAR(255);"); st.executeUpdate("ALTER TABLE alignment ADD conftype VARCHAR(255);");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment