1*d127360fSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*d127360fSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*d127360fSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*d127360fSAndrew Rist * distributed with this work for additional information 6*d127360fSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*d127360fSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*d127360fSAndrew Rist * "License"); you may not use this file except in compliance 9*d127360fSAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 11*d127360fSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 13*d127360fSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*d127360fSAndrew Rist * software distributed under the License is distributed on an 15*d127360fSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*d127360fSAndrew Rist * KIND, either express or implied. See the License for the 17*d127360fSAndrew Rist * specific language governing permissions and limitations 18*d127360fSAndrew Rist * under the License. 19cdf0e10cSrcweir * 20*d127360fSAndrew Rist *************************************************************/ 21*d127360fSAndrew Rist 22*d127360fSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir 25cdf0e10cSrcweir import java.util.*; 26cdf0e10cSrcweir import java.io.*; 27cdf0e10cSrcweir 28cdf0e10cSrcweir public class SdfData 29cdf0e10cSrcweir { 30cdf0e10cSrcweir private String filename; 31cdf0e10cSrcweir private OrderedHashMap ohm; 32cdf0e10cSrcweir private LinkedHashSet languagesFound; 33cdf0e10cSrcweir 34cdf0e10cSrcweir public SdfData() 35cdf0e10cSrcweir { 36cdf0e10cSrcweir languagesFound = new LinkedHashSet(); 37cdf0e10cSrcweir ohm = new OrderedHashMap(); 38cdf0e10cSrcweir languagesFound = new LinkedHashSet(); 39cdf0e10cSrcweir } 40cdf0e10cSrcweir public SdfData( String filename ) 41cdf0e10cSrcweir { 42cdf0e10cSrcweir this(); 43cdf0e10cSrcweir this.filename = filename; 44cdf0e10cSrcweir } 45cdf0e10cSrcweir 46cdf0e10cSrcweir public LinkedHashSet getLanguages() 47cdf0e10cSrcweir { 48cdf0e10cSrcweir return languagesFound; 49cdf0e10cSrcweir } 50cdf0e10cSrcweir public SdfEntity get( SdfEntity obj ) 51cdf0e10cSrcweir { 52cdf0e10cSrcweir return (SdfEntity) ohm.get( (String)obj.getId() ); 53cdf0e10cSrcweir } 54cdf0e10cSrcweir public SdfEntity get( String key ){ 55cdf0e10cSrcweir return (SdfEntity) ohm.get( key ); 56cdf0e10cSrcweir } 57cdf0e10cSrcweir public void add( SdfEntity obj ) 58cdf0e10cSrcweir { 59cdf0e10cSrcweir ohm.add( obj.getId() , obj ); 60cdf0e10cSrcweir } 61cdf0e10cSrcweir 62cdf0e10cSrcweir public void read() 63cdf0e10cSrcweir { 64cdf0e10cSrcweir BufferedReader in; 65cdf0e10cSrcweir try 66cdf0e10cSrcweir { 67cdf0e10cSrcweir in = new BufferedReader( new InputStreamReader( new FileInputStream( filename ), "UTF-8" ) ); 68cdf0e10cSrcweir SdfEntity entity; 69cdf0e10cSrcweir while( in.ready() ) 70cdf0e10cSrcweir { 71cdf0e10cSrcweir String line = in.readLine(); 72cdf0e10cSrcweir if( line.length() > 0 ) 73cdf0e10cSrcweir { 74cdf0e10cSrcweir entity = new SdfEntity( line ); 75cdf0e10cSrcweir ohm.add( entity.getId() , entity ); // test if is valid 76cdf0e10cSrcweir languagesFound.add( entity.getLangid() ); 77cdf0e10cSrcweir } 78cdf0e10cSrcweir } 79cdf0e10cSrcweir in.close(); 80cdf0e10cSrcweir } 81cdf0e10cSrcweir catch( IOException e ) 82cdf0e10cSrcweir { 83cdf0e10cSrcweir System.out.println("Warning: can not read file " + filename); 84cdf0e10cSrcweir } 85cdf0e10cSrcweir } 86cdf0e10cSrcweir public void write( String filename ) 87cdf0e10cSrcweir { 88cdf0e10cSrcweir FileWriter out; 89cdf0e10cSrcweir try 90cdf0e10cSrcweir { 91cdf0e10cSrcweir out = new FileWriter( filename , true ); // Always append 92cdf0e10cSrcweir for( Enumeration e = ohm.elements(); e.hasMoreElements(); ) 93cdf0e10cSrcweir { 94cdf0e10cSrcweir out.write( ( (SdfEntity) e.nextElement() ).toString() + "\n" ); 95cdf0e10cSrcweir } 96cdf0e10cSrcweir out.close(); 97cdf0e10cSrcweir } 98cdf0e10cSrcweir catch( IOException e ) 99cdf0e10cSrcweir { 100cdf0e10cSrcweir System.out.println("Error: Can't write to file " + filename); 101cdf0e10cSrcweir System.exit( -1 ); 102cdf0e10cSrcweir } 103cdf0e10cSrcweir } 104cdf0e10cSrcweir } 105