Fixed Query

This commit is contained in:
Luca Frosini 2021-10-15 15:43:56 +02:00
parent b62f51e53c
commit 62db808543
4 changed files with 69 additions and 45 deletions

View File

@ -35,7 +35,7 @@ public class JsonQueryConsistsOf extends JsonQueryERElement{
consistsOfBuffer.append(direction.opposite().name().toLowerCase());
consistsOfBuffer.append("V(\"");
consistsOfBuffer.append(requestedResourceType);
consistsOfBuffer.append("\") FROM ("); // Open ( 1
consistsOfBuffer.append("\") FROM ( "); // Open ( 1
int size = jsonNode.size();
if(size > 2) {
@ -46,22 +46,17 @@ public class JsonQueryConsistsOf extends JsonQueryERElement{
consistsOfBuffer.append(direction.name().toLowerCase());
consistsOfBuffer.append("E(\"");
consistsOfBuffer.append(type);
consistsOfBuffer.append("\") FROM ("); // Open ( 2
consistsOfBuffer.append("\") FROM ( "); // Open ( 2
if(!entryPoint) {
StringBuffer buffer = new StringBuffer();
buffer.append(" TRAVERSE ");
buffer.append(direction.opposite().name().toLowerCase());
buffer.append("V(\"");
buffer.append(requestedResourceType);
buffer.append("\").");
buffer.append("TRAVERSE ");
buffer.append(direction.opposite().name().toLowerCase());
buffer.append("E(\"");
buffer.append(type);
buffer.append("\") FROM (");
buffer.append("\") FROM ( ");
buffer.append(stringBuffer);
buffer.append(")");
stringBuffer = buffer;
}

View File

@ -22,14 +22,14 @@ public class JsonQueryFacet extends JsonQueryERElement{
newBuffer.append("SELECT FROM ");
if(!entryPoint) {
newBuffer.append(" (");
newBuffer.append("( ");
newBuffer.append("TRAVERSE inV(\"");
}
newBuffer.append(type);
if(!entryPoint) {
newBuffer.append("\") FROM (");
newBuffer.append("\") FROM ( ");
newBuffer.append(stringBuffer);
newBuffer.append(")");
newBuffer.append(")");

View File

@ -31,16 +31,26 @@ public class JsonQueryIsRelatedTo extends JsonQueryERElement{
int size = jsonNode.size();
if(size > 2) {
buffer.append("SELECT FROM ( "); // Open ( SELECT
buffer.append("SELECT FROM ( ");
if(entryPoint) {
buffer.append(type);
}
}else {
if(entryPoint) {
buffer.append("SELECT FROM ");
buffer.append(type);
}
}
buffer.append("TRAVERSE ");
buffer.append(direction.opposite().name().toLowerCase());
buffer.append("E(\"");
buffer.append(type);
buffer.append("\") FROM (");
buffer.append(stringBuffer);
buffer.append(")");
if(!entryPoint) {
buffer.append("TRAVERSE ");
buffer.append(direction.opposite().name().toLowerCase());
buffer.append("E(\"");
buffer.append(type);
buffer.append("\") FROM ( ");
buffer.append(stringBuffer);
buffer.append(")");
}
stringBuffer = buffer;
@ -79,17 +89,19 @@ public class JsonQueryIsRelatedTo extends JsonQueryERElement{
stringBuffer = jsonQueryResource.analize(stringBuffer);
StringBuffer buffer = new StringBuffer();
buffer.append(" TRAVERSE ");
buffer.append("TRAVERSE ");
buffer.append(direction.opposite().name().toLowerCase());
buffer.append("V(\"");
buffer.append(requestedResourceType);
buffer.append("\").");
buffer.append("\") FROM ( ");
buffer.append("TRAVERSE ");
buffer.append(direction.name().toLowerCase());
buffer.append("E(\"");
buffer.append(type);
buffer.append("\") FROM (");
buffer.append("\") FROM ( ");
buffer.append(stringBuffer);
buffer.append(")");
buffer.append(")");
stringBuffer = buffer;
return stringBuffer;

View File

@ -20,49 +20,66 @@ public class JsonQueryResource extends JsonQueryERElement {
@Override
protected StringBuffer analize(StringBuffer stringBuffer) throws SchemaNotFoundException, InvalidQueryException {
if(!entryPoint) {
StringBuffer newBuffer = new StringBuffer();
newBuffer.append("TRAVERSE ");
newBuffer.append(direction.name().toLowerCase());
newBuffer.append("V(\"");
newBuffer.append(type);
newBuffer.append("\") FROM ( ");
newBuffer.append(stringBuffer);
newBuffer.append(")");
stringBuffer = newBuffer;
}
boolean initFound = false;
ArrayNode isRelatedToArray = (ArrayNode) jsonNode.get(Resource.IS_RELATED_TO_PROPERTY);
if(isRelatedToArray!=null && isRelatedToArray.size()>0) {
initFound = true;
for(int i=0; i<isRelatedToArray.size(); i++) {
JsonNode isRelatedToJsonNode = isRelatedToArray.get(i);
JsonQueryIsRelatedTo jsonQueryIsRelatedTo = new JsonQueryIsRelatedTo(isRelatedToJsonNode);
jsonQueryIsRelatedTo.setRequestedResourceType(type);
jsonQueryIsRelatedTo.setEntryPoint(entryPoint && i==0);
stringBuffer = jsonQueryIsRelatedTo.analize(stringBuffer);
}
}
ArrayNode consistsOfArray = (ArrayNode) jsonNode.get(Resource.CONSISTS_OF_PROPERTY);
if(consistsOfArray!=null && consistsOfArray.size()>0) {
initFound = true;
for(int i=0; i<consistsOfArray.size(); i++) {
JsonNode consistsOfJsonNode = consistsOfArray.get(i);
JsonQueryConsistsOf jsonQueryConsistsOf = new JsonQueryConsistsOf(consistsOfJsonNode);
jsonQueryConsistsOf.setRequestedResourceType(type);
jsonQueryConsistsOf.setDirection(Direction.IN);
jsonQueryConsistsOf.setEntryPoint(entryPoint && i==0);
jsonQueryConsistsOf.setEntryPoint(entryPoint && !initFound && i==0);
stringBuffer = jsonQueryConsistsOf.analize(stringBuffer);
}
}
ArrayNode isRelatedToArray = (ArrayNode) jsonNode.get(Resource.IS_RELATED_TO_PROPERTY);
if(isRelatedToArray!=null && isRelatedToArray.size()>0) {
for(int i=0; i<isRelatedToArray.size(); i++) {
JsonNode isRelatedToJsonNode = isRelatedToArray.get(i);
JsonQueryIsRelatedTo jsonQueryIsRelatedTo = new JsonQueryIsRelatedTo(isRelatedToJsonNode);
jsonQueryIsRelatedTo.setRequestedResourceType(type);
jsonQueryIsRelatedTo.setEntryPoint(entryPoint && !initFound && i==0);
stringBuffer = jsonQueryIsRelatedTo.analize(stringBuffer);
}
initFound = true; // Must be set after the cycle and not before
}
if(!initFound) {
if(entryPoint) {
stringBuffer = new StringBuffer();
stringBuffer.append("SELECT FROM ");
stringBuffer.append(type);
}else {
StringBuffer newBuffer = new StringBuffer();
newBuffer.append("TRAVERSE ");
newBuffer.append(direction.name().toLowerCase());
newBuffer.append("V(\"");
newBuffer.append(type);
newBuffer.append("\") FROM (");
newBuffer.append(stringBuffer);
newBuffer.append(")");
stringBuffer = newBuffer;
}
// else {
// StringBuffer newBuffer = new StringBuffer();
// newBuffer.append("TRAVERSE ");
// newBuffer.append(direction.name().toLowerCase());
// newBuffer.append("V(\"");
// newBuffer.append(type);
// newBuffer.append("\") FROM ( ");
// newBuffer.append(stringBuffer);
// newBuffer.append(")");
// stringBuffer = newBuffer;
// }
}
return stringBuffer;