Commit ef530bb3 authored by Bonte Bruno's avatar Bonte Bruno
Browse files

Adding feature in get function

	* Possibility of specifying the ids of entities reach and hru to
optimise the simulation
parent a242ad08
No related merge requests found
Showing with 65 additions and 12 deletions
+65 -12
......@@ -39,6 +39,7 @@ import java.net.Socket;
import org.json.JSONObject;
import org.json.JSONArray;
import jams.JAMSException;
/**
*
......@@ -298,8 +299,27 @@ public class CouplingCommunication extends JAMSComponent {
return result;
}
public String getAttribAllHruList(List<String> attributes) {
public String getAttribAllHruList(List<String> attributes, List<Long> requestedIds) {
Iterator<Attribute.Entity> hruIterator = hrus.getEntities().iterator();
List<Attribute.Entity> requestedEntities = new ArrayList(); // used only if some entities are requested
long id;
if (!requestedIds.isEmpty()){
Iterator<Long> idsIterator = requestedIds.iterator();
while(idsIterator.hasNext()) {
Attribute.Entity selectedEntity;
id = idsIterator.next();
selectedEntity = hrus.getEntity(id);
try{
if(selectedEntity == null){
throw new JAMSException("Hru nb "+id+" not found in Hrus");
}
} catch(Exception e) {
return("Hru nb "+id+" not found in Hrus");
}
requestedEntities.add(selectedEntity);
}
hruIterator = requestedEntities.iterator();
}
Attribute.Entity hru;
Double value;
Double hruId;
......@@ -328,8 +348,27 @@ public class CouplingCommunication extends JAMSComponent {
return result;
}
public String getAttribAllReachList(List<String> attributes) {
public String getAttribAllReachList(List<String> attributes, List<Long> requestedIds) {
Iterator<Attribute.Entity> reachIterator = reachs.getEntities().iterator();
List<Attribute.Entity> requestedEntities = new ArrayList(); // used only if some entities are requested
long id;
if (!requestedIds.isEmpty()){
Iterator<Long> idsIterator = requestedIds.iterator();
while(idsIterator.hasNext()) {
Attribute.Entity selectedEntity;
id = idsIterator.next();
selectedEntity = reachs.getEntity(id);
try{
if(selectedEntity == null){
throw new JAMSException("Reach nb "+id+" not found in reachs");
}
} catch(Exception e) {
return("Reach nb "+id+" not found in reachs");
}
requestedEntities.add(selectedEntity);
}
reachIterator = requestedEntities.iterator();
}
Attribute.Entity reach;
Double value;
Double reachId;
......@@ -751,12 +790,19 @@ public class CouplingCommunication extends JAMSComponent {
commandIsGet = true;
if (jsonPayload.has("keys") && !jsonPayload.isNull("keys")) {
JSONArray jsonArray = jsonPayload.getJSONArray("keys");
List<String> keys = new ArrayList();
for (int i = 0; i < jsonArray.length();i++){
keys.add(jsonArray.getString(i));
//log("an attribute name:" + jsonArray.getString(i));
};
out.print(getAttribAllHruList(keys));
List<String> keys = new ArrayList();
for (int i = 0; i < jsonArray.length();i++){
keys.add(jsonArray.getString(i));
//log("an attribute name:" + jsonArray.getString(i));
};
List<Long> ids = new ArrayList();
if (jsonPayload.has("ids") && !jsonPayload.isNull("ids")) {
jsonArray = jsonPayload.getJSONArray("ids");
for (int i = 0; i < jsonArray.length();i++){
ids.add(jsonArray.getLong(i));
};
}
out.print(getAttribAllHruList(keys, ids));
}
sAcceptConnection.release();
} else if (command.equals("getReach")) {
......@@ -765,10 +811,17 @@ public class CouplingCommunication extends JAMSComponent {
JSONArray jsonArray = jsonPayload.getJSONArray("keys");
List<String> keys = new ArrayList();
for (int i = 0; i < jsonArray.length();i++){
keys.add(jsonArray.getString(i));
//log("an attribute name:" + jsonArray.getString(i));
};
out.print(getAttribAllReachList(keys));
keys.add(jsonArray.getString(i));
//log("an attribute name:" + jsonArray.getString(i));
};
List<Long> ids = new ArrayList();
if (jsonPayload.has("ids") && !jsonPayload.isNull("ids")) {
jsonArray = jsonPayload.getJSONArray("ids");
for (int i = 0; i < jsonArray.length();i++){
ids.add(jsonArray.getLong(i));
};
}
out.print(getAttribAllReachList(keys, ids));
}
sAcceptConnection.release();
} else if (command.equals("getHruSum")) {
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment