⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testcollection.java

📁 实现对owl-s描述服务的检索
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		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 + -