001 // This file is part of the Attempto Java Packages. 002 // Copyright 2008, Attempto Group, University of Zurich (see http://attempto.ifi.uzh.ch). 003 // 004 // The Attempto Java Packages is free software: you can redistribute it and/or modify it under the 005 // terms of the GNU Lesser General Public License as published by the Free Software Foundation, 006 // either version 3 of the License, or (at your option) any later version. 007 // 008 // The Attempto Java Packages is distributed in the hope that it will be useful, but WITHOUT ANY 009 // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 010 // PURPOSE. See the GNU Lesser General Public License for more details. 011 // 012 // You should have received a copy of the GNU Lesser General Public License along with the Attempto 013 // Java Packages. If not, see http://www.gnu.org/licenses/. 014 015 package ch.uzh.ifi.attempto.ape; 016 017 import java.util.ArrayList; 018 import java.util.Collection; 019 import java.util.List; 020 021 /** 022 * This class represents a lexicon which consists of a set of lexicon entries. 023 * 024 * @author Tobias Kuhn 025 */ 026 public class Lexicon { 027 028 private ArrayList<LexiconEntry> entries = new ArrayList<LexiconEntry>(); 029 030 031 /** 032 * Creates an empty lexicon. 033 */ 034 public Lexicon() { 035 } 036 037 /** 038 * Adds a lexicon entry to this lexicon. 039 * 040 * @param entry The lexicon entry to be added. 041 */ 042 public void addEntry(LexiconEntry entry) { 043 if (!entries.contains(entry)) { 044 entries.add(entry); 045 } 046 } 047 048 /** 049 * Adds a collection of lexicon entries to this lexicon. 050 * 051 * @param entries The lexicon entries to be added. 052 */ 053 public void addEntries(Collection<LexiconEntry> entries) { 054 for (LexiconEntry entry : entries) { 055 addEntry(entry); 056 } 057 } 058 059 /** 060 * Removes the lexicon entry from this lexicon. 061 * 062 * @param entry The lexicon entry to be removed. 063 */ 064 public void removeEntry(LexiconEntry entry) { 065 entries.remove(entry); 066 } 067 068 /** 069 * Removes all entries from this lexicon. 070 */ 071 public void removeAllEntries() { 072 entries.clear(); 073 } 074 075 /** 076 * Returns a list of all lexicon entries that are contained in this lexicon. 077 * 078 * @return A list of all lexicon entries. 079 */ 080 public List<LexiconEntry> getEntries() { 081 return new ArrayList<LexiconEntry>(entries); 082 } 083 084 /** 085 * Returns the lexicon as a serialized Prolog list. 086 * 087 * @return The lexicon as a serialized Prolog list. 088 */ 089 public String toList() { 090 StringBuffer sb = new StringBuffer(); 091 for (LexiconEntry entry : entries) { 092 sb.append(entry.toString()); 093 sb.append(", "); 094 } 095 if (sb.length() > 0) { 096 sb.substring(0, sb.length()-2); 097 } 098 return "[" + sb.toString() + "]"; 099 } 100 101 /** 102 * Returns this lexicon as a contents of an APE lexicon file, i.e. 103 * each entry is followed by a dot ('.') and a space (' '). 104 */ 105 @Override 106 public String toString() { 107 StringBuffer sb = new StringBuffer(); 108 for (LexiconEntry entry : entries) { 109 sb.append(entry.toString()); 110 sb.append(". "); 111 } 112 return sb.toString(); 113 } 114 115 }