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

📄 terms.java

📁 toocom源代码,主要应用在本体匹配方面!
💻 JAVA
字号:
package toocom.ocgl;

import java.util.*;

/** 
 * This class allows to specify several terms for a given object, corresponding to different languages. Each term is
 * linked to a language. The available languages are ENGLISH, FRENCH, GERMAN and SPANISH. 
 *
 * @author Fr閐閞ic F黵st
 */
public class Terms{

	/** The terms hashtable contains the different terms identified by an instance of the Language class. */
	private Hashtable terms;
	
	public Terms(){
		this.terms = new Hashtable();
		String s = new String("");
		for(Iterator i = Language.getAllLanguages().iterator();i.hasNext();){
			this.terms.put((Language) i.next(),s);
		}
	}
	
	/** Creates the Terms class and add the term of the given language. Giving * for the term will create the GENERIC_CONCEPT_TERM. */
	public Terms(String term, Language l){
		this.terms = new Hashtable();
		String s = new String("");
		for(Iterator i = Language.getAllLanguages().iterator();i.hasNext();){
			this.terms.put((Language) i.next(),s);
		}
		if(term != null){
			if(term.equals("*")){
				LinkedList languages = Language.getAllLanguages(); 
				for(int i = 0;i < languages.size();i ++){
					Language lbis = (Language) languages.get(i);
					this.terms.put(lbis,"*"); 
				}
			}
			else this.terms.put(l,term);
		}
	}
	
	/** Creates a term with the same term for all languages. */
	public Terms(String term){
		this.terms = new Hashtable();
		for(Iterator i = Language.getAllLanguages().iterator();i.hasNext();){
			this.terms.put((Language) i.next(),term);
		}
	}
	
	public Terms cloneTerms(){
		Terms result = new Terms();
		for(Iterator i = Language.getAllLanguages().iterator();i.hasNext();){
			Language l = (Language) i.next();
			result.setTerm(this.getTerm(l),l);
		}
		return result;
	}
	
	/** Returns a copy of the term with the given suffix appended to the end of all terms. */
	public Terms appendAndCopy(String suffix){
		Terms result = new Terms();
		for(Iterator i = Language.getAllLanguages().iterator();i.hasNext();){
			Language l = (Language) i.next();
			result.setTerm(this.getTerm(l) + suffix,l);
		}
		return result;
	}
	
	/** Add to the end of all terms the correspondings terms of t, separated by the 
	 *  specified string, copy and return it. */
	public Terms appendAndCopy(Terms t,String separator){
		Terms result = new Terms();
		for(Iterator i = Language.getAllLanguages().iterator();i.hasNext();){
			Language l = (Language) i.next();
			result.setTerm(this.getTerm(l) + separator + t.getTerm(l),l);
		}
		return result;
	}
	
	/** Appends the given suffix to the end of all terms. */
	public void append(String suffix){
		for(Iterator i = Language.getAllLanguages().iterator();i.hasNext();){
			Language l = (Language) i.next();
			this.setTerm(this.getTerm(l) + suffix,l);
		}
	}
	
	/** Add to the end of all terms the correspondings terms of t. */
	public void append(Terms t){
		for(Iterator i = Language.getAllLanguages().iterator();i.hasNext();){
			Language l = (Language) i.next();
			this.terms.put(this.getTerm(l) + t.getTerm(l),l);
		}
	}
	
	/** Add to the end of all terms the correspondings terms of t, separated by the 
	 *  specified string. */
	public void appendWithSeparator(Terms t,String separator){
		for(Iterator i = Language.getAllLanguages().iterator();i.hasNext();){
			Language l = (Language) i.next();
			this.terms.put(this.getTerm(l) + separator + t.getTerm(l),l);
		}
	}
	
	/** Returns true if the terms of the Term end with the corresponding terms of end. */
	public boolean endsWith(Terms end){
		for(Iterator i = Language.getAllLanguages().iterator();i.hasNext();){
			Language l = (Language) i.next();
			if(!this.getTerm(l).endsWith(end.getTerm(l))) return false;
		}
		return true;
	}
	
	/** Returns the part of the different terms that is situated before " - ". */
	public Terms getFirstPart(){
		Terms result = new Terms();
		for(Iterator i = Language.getAllLanguages().iterator();i.hasNext();){
			Language l = (Language) i.next();
			result.setTerm(this.getTerm(l).substring(0,this.getTerm(l).indexOf(" - ")),l);
		}
		return result;	
	}
	
	/** Returns a generic concept term. */
	public static Terms getGenericConceptTerms(){
		Terms result = new Terms();
		for(Iterator i = Language.getAllLanguages().iterator();i.hasNext();){
			result.setTerm(CGConstants.GENERIC_CONCEPT_LABEL,(Language) i.next());
		}
		return result;
	}
	
	/** Returns an undefined term. */
	public static Terms getUndefinedTerms(){
		Terms result = new Terms();
		for(Iterator i = Language.getAllLanguages().iterator();i.hasNext();){
			result.setTerm(CGConstants.UNDEFINED_ELEMENT,(Language) i.next());
		}
		return result;
	}
	
	/** Add a term of the given language or modify the term if it already exists. Given * for the term will creates the GENERIC_CONCEPT_TERM. */
	public void setTerm(String term, Language l){
		if(term != null){
			if(term.equals("*")){
				LinkedList languages = Language.getAllLanguages(); 
				for(int i = 0;i < languages.size();i ++){
					Language lbis = (Language) languages.get(i);
					this.terms.put(lbis,"*"); 
				}
			}
			else this.terms.put(l,term);
		}
	}
	
	/** Add a negation in front of the terms and returns a copy of the terms. */
	public Terms denyTerms(){
		Terms result = new Terms();
		LinkedList languages = Language.getAllLanguages(); 
		for(int i = 0;i < languages.size();i ++){
			Language l = (Language) languages.get(i);
			result.setTerm(CGConstants.NEGATION_SYMBOL + " " + this.terms.get(l),l); 
		}
		return result;
	}
	
	/** Returns the term for the given language, null if any term exists for this language. */
	public String getTerm(Language l){
		return ((String) this.terms.get(l));	
	}
	
	/** Returns true if t contains the same terms for the specified language than the Terms, or if the term corresponding to the language does not exist for the Terms nor for t. */
	public boolean equals(Terms t, Language l){
		String temp = (String) this.terms.get(l);
		if(temp == null){
			if(t.getTerm(l) == null) return true;
			else return false;
		}
		else{
			if(t.getTerm(l) == null) return false;
			else return (t.getTerm(l).equals(temp));
		}
	}

	/** Returns true if the t Terms contains the same terms for each language than the Terms. */
	public boolean equals(Terms t){
		LinkedList languages = Language.getAllLanguages(); 
		for(int i = 0;i < languages.size();i ++){
			Language l = (Language) languages.get(i);
			if(!this.equals(t,l)) return false;
		}
		return true;
	}
	
	/** Returns a string with all the terms in the different languages. */
	public String toString(){
		String result = "";
		for(Enumeration en = terms.keys(); en.hasMoreElements() ;){
			Language l = (Language) en.nextElement();
			String temp = (String) this.terms.get(l);
			if(temp != null){
				if(!result.equals("")) result = result + " , ";
				result = result + temp + "(" + l.getLabel() + ")";
			}
			
		} 
		return result;
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -