📄 testcollection.java
字号:
if( (activeQuery!=null) && (activeQuery.getURI().equals(query)) )
updateAnswerset(activeQuery);
}
catch(Exception e) {
GUIState.displayWarning(this.getClass().toString() + ": ", e.getMessage());
}
}
public void addServicesToAnswerset(URI query, Object[] services) {
for (int i=0;i<services.length;i++) {
try{
addServiceToAnswerset(query,((ServiceItem)services[i]).getURI());
}
catch(Exception e) {
GUIState.displayWarning(this.getClass().toString() +": " + e.getMessage(),
"Didn't add " + services[i].toString() + " to Answerset of query " +
query.toString());
}
}
}
public void addServicesToAnswerset(URI query, Set services) {
addServicesToAnswerset( query,services.toArray());
}
public void removeServiceFromAnswerset(URI query, URI service) {
if ( (!queries.containsKey(query)) || (!answerset.containsKey(query)))
return;
((TreeSet)answerset.get(query)).remove(service);
if( (activeQuery!=null) && (activeQuery.getURI().equals(query)) )
updateAnswerset(activeQuery);
}
public void removeServicesFromAnswerset(URI query, Object[] services) {
for (int i=0;i<services.length;i++) {
try{
removeServiceFromAnswerset(query,((ServiceItem)services[i]).getURI());
}
catch(Exception e) {
GUIState.displayWarning(this.getClass().toString() +": " + e.getMessage(), "Didn't add " + services[i].toString() + " to Answerset of query " + query.toString());
}
}
}
public void removeServicesFromAnswerset(URI query, Set services) {
removeServicesFromAnswerset( query,services.toArray());
}
/**
* Returns the sorted answerset for a given query, if the query has not yet been executed or
* if the query does not exist (e.g. has not been added) an empty Set will be returned.
* ATTENTION this returns the previously STORED answerset, not the one calculated by the matchmaker
*
* @param query URI of the query
* @return SoretedSet of ServiceItems that are the answerset of the query
*/
public SortedSet getAnswerset(URI query) {
URI localQuery = query;
if (!answerset.containsKey(query)) {
Query item = new Query(localQuery);
if (answerset.containsKey(item.getURI()))
localQuery = item.getURI();
else
return new TreeSet();
}
return (TreeSet)answerset.get(localQuery);
}
public void setComment(String comment) {
this.comment = comment;
}
public String getComment() {
return comment;
}
public void setVersion(String version) {
this.version = version;
}
public String getVersion() {
return version;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public DefaultListModel getServiceDataModel() {
return serviceDataModel;
}
public DefaultListModel getQueryDataModel() {
return queryDataModel;
}
public DefaultListModel getAnswerSetDataModel() {
return answersDataModel;
}
private void updateDataModels() {
//this.answerList = new JList(TestCollection.getInstance().getServices().toArray());
serviceDataModel.removeAllElements();
SortedSet sortedServices = new TreeSet();
sortedServices.addAll(services.values());
Iterator iter = sortedServices.iterator();
while(iter.hasNext()) {
serviceDataModel.addElement( ((ServiceItem)iter.next()));
}
SortedSet sortedQueries = new TreeSet();
sortedQueries.addAll(queries.values());
queryDataModel.removeAllElements();
iter = sortedQueries.iterator();
while(iter.hasNext()) {
queryDataModel.addElement( ((Query)iter.next()));
}
}
public void updateAnswerset(Query query) {
try {
activeQuery = query;
Set set = getAnswerset(query.getURI());
Iterator iter = set.iterator();
answersDataModel.removeAllElements();
while(iter.hasNext()) {
answersDataModel.addElement( TestCollection.getInstance().getService((URI)iter.next()));
}
} catch(Exception e) {
GUIState.displayWarning(this.getClass().toString() +" | " + "updateAnswerset" + ": ",e.getClass().toString() +"\n" + "Problem computing answerset for " + query + "\n" + e.getMessage());
}
}
/**
* Restores a testcollection from the given path
* @param path Path to load the testcollection from
* @throws IOException
* @throws FileNotFoundException
* @throws ClassNotFoundException
*/
public void load(String path) throws FileNotFoundException, IOException, ClassNotFoundException {
ObjectInputStream s = new ObjectInputStream(new FileInputStream(path));
//instance = new TestCollection();
services = (HashMap)s.readObject();
queries = (HashMap)s.readObject();
answerset= (HashMap)s.readObject();
matchmakerAnswerset = (HashMap)s.readObject();
name = (String)s.readObject();
version = (String)s.readObject();
comment = (String)s.readObject();
TestCollection.getInstance().setName(name);
TestCollection.getInstance().setVersion(version);
TestCollection.getInstance().setComment(comment);
s.close();
updateDataModels();
}
/**
* Restores a testcollection from the given path
* @param path Path to load the testcollection from
* @param comp Component for which an error should be displayed
*/
public void load(String path, Component comp) {
try {
load(path);
GUIState.displayWarning(comp,"Loaded test collection " + name,
"Loaded " + services.size() + " Services\n" +
"Loaded " + queries.size() + " Requests\n");
} catch (Exception e) {
GUIState.displayWarning(comp,"Attempted to load test collection", "Couldn't load test collection from path\n" + path + "\n" + e.getMessage());
e.printStackTrace();
}
// updateDataModels();
// updateData();
}
public void save(String path) {
ObjectOutputStream s;
try {
s = new ObjectOutputStream(new FileOutputStream(path));
s.writeObject(services);
s.writeObject(queries);
s.writeObject(answerset);
s.writeObject(matchmakerAnswerset);
s.writeObject(name);
s.writeObject(version);
s.writeObject(comment);
s.flush();
s.close();
} catch (Exception e) {
GUIState.displayWarning(this.getClass().toString() + "|save:", e.getClass().toString() + "\n" + "Couldn't save file " + path + "\n" + e.getMessage());
e.printStackTrace();
}
}
/**
* Restores a testcollection from the given path
*/
public void load(){
try {
load("testcollection.dat");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void save() {
save("testcollection.dat");
}
// private SortedSet createDummyData(Query query){
// Random rand = new Random();
// SortedSet set = new TreeSet();
// Iterator iter = services.entrySet().iterator();
// ServiceItem service;
// HybridServiceItem item;
// while(iter.hasNext()) {
// service = (ServiceItem)((Map.Entry)iter.next()).getValue();
// item = new HybridServiceItem(service);
// item.setDegreeOfMatch(rand.nextInt(6));
// item.setSyntacticSimilarity( ((double)rand.nextInt(101))/100);
// set.add(item);
// }
// return set;
// }
public boolean runQuery(Query query) {
return runQuery(query,true);
}
public boolean runQuery(Query query, boolean updateDatamodel) {
SortedSet set = new TreeSet();
set = MatchmakerInterface.getInstance().matchRequest(query.getURI(),GUIState.getInstance().getMinDegree(), GUIState.getInstance().getTreshold());
result.put(query,set);
if (updateDatamodel)
updateData();
return true;
}
// public void runAllQueries(){
// Iterator iter = queries.entrySet().iterator();
// Map.Entry entry;
// while (iter.hasNext()){
// entry = (Map.Entry)iter.next();
// runQuery((Query)entry.getValue(),false);
// }
// updateData();
// }
public SortedSet getMatchmakerAnswerset(Query query, int sorting) {
SortedSet set = new TreeSet();
Iterator iter = ( (TreeSet) result.get(query)).iterator();
if (sorting==GUIState.SORT_SEMANTIC)
while (iter.hasNext()) {
set.add(new SemanticServiceItem((HybridServiceItem)iter.next()));
}
else if (sorting==GUIState.SORT_SYNTACTIC)
while (iter.hasNext()) {
set.add(new SyntacticServiceItem((HybridServiceItem)iter.next()));
}
else
while (iter.hasNext()) {
set.add((HybridServiceItem)iter.next());
}
return set;
}
public Map getMatchmakerAnswerset(int sorting) {
Map map = new HashMap();
Iterator iter = result.entrySet().iterator();
Query currentQuery;
while (iter.hasNext()) {
currentQuery = (Query)((Map.Entry) iter.next()).getKey();
// if (currentQuery.isProcessed())
map.put( currentQuery, getMatchmakerAnswerset(currentQuery, sorting) );
}
return map;
}
public void registerUpdateDataListener(UpdateDataListener listener) {
registry.add(listener);
}
public void updateData() {
updateDataModels();
Iterator iter = registry.iterator();
while (iter.hasNext()) {
((UpdateDataListener)iter.next()).updateData();
}
}
public void setServiceProcessed(ServiceItem service,boolean processed) {
((ServiceItem)services.get(service.getURI())).setProcessed(processed);
}
public boolean checkRelevanceSets(Component parent) {
// if ( !(MatchmakerInterface.getInstance().didRun()) )
// return true;
if (!GUIState.getInstance().getPrecisionRecall())
return true;
Query check;
for (Iterator iter = queries.values().iterator();iter.hasNext();) {
check = (Query) iter.next();
if ( (getAnswerset(check.getURI()).size()<=0)) {
GUIState.displayWarning(parent, "Empty Answerset",
"The relevance set of service request " + check.getName() + " is empty.\n" +
"Please define a relevance set for recall/precision measurement.");
return false;
}
// owlsmx.io.ErrorLog.instanceOf().report("Check 1: " + check.getURI().toString() + " " + (getAnswerset(check.getURI()).size()<=0) );
}
// Map.Entry me;
// for (Iterator iter = answerset.entrySet().iterator();iter.hasNext();) {
// me = (Map.Entry) iter.next();
// if ( ( (Set) me.getValue() ).size()<=0)
// GUIState.displayWarning(parent, "Empty Answerset",
// "The relevance set of service request " + ( (URI)me.getKey()).toString() + " is empty.\n" +
// "Please define a relevance set for recall/precision measurement.");
// owlsmx.io.ErrorLog.instanceOf().report("Check 2: " + ( (URI)me.getKey()).toString() + " " + ( ( (Set) me.getValue() ).size()<=0) );
// }
return true;
}
public boolean checkQueriesAndServicesSets(Component parent) {
// if ( !(MatchmakerInterface.getInstance().didRun()) )
// return true;
if ( (services.isEmpty()) || (services.size()<=0) ) {
GUIState.displayWarning(parent,"Test collection incomplete","There were no services found in the test collection. Please add some.");
return false;
}
if ( (queries.isEmpty()) || (queries.size()<=0) ) {
GUIState.displayWarning(parent,"Test collection incomplete","There were no service requests found in the test collection. Please add some.");
return false;
}
return checkRelevanceSets(parent);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -