xref: /trunk/main/l10ntools/java/jpropex/java/SdfData.java (revision 3309286857f19787ae62bd793a98b5af4edd2ad3)
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 
SdfData()34cdf0e10cSrcweir     public SdfData()
35cdf0e10cSrcweir     {
36cdf0e10cSrcweir         languagesFound  = new LinkedHashSet();
37cdf0e10cSrcweir         ohm             = new OrderedHashMap();
38cdf0e10cSrcweir         languagesFound  = new LinkedHashSet();
39cdf0e10cSrcweir     }
SdfData( String filename )40cdf0e10cSrcweir     public SdfData( String filename )
41cdf0e10cSrcweir     {
42cdf0e10cSrcweir         this();
43cdf0e10cSrcweir         this.filename = filename;
44cdf0e10cSrcweir     }
45cdf0e10cSrcweir 
getLanguages()46cdf0e10cSrcweir     public LinkedHashSet getLanguages()
47cdf0e10cSrcweir     {
48cdf0e10cSrcweir         return languagesFound;
49cdf0e10cSrcweir     }
get( SdfEntity obj )50cdf0e10cSrcweir     public SdfEntity get( SdfEntity obj )
51cdf0e10cSrcweir     {
52cdf0e10cSrcweir         return (SdfEntity) ohm.get( (String)obj.getId() );
53cdf0e10cSrcweir     }
get( String key )54cdf0e10cSrcweir     public SdfEntity get( String key ){
55cdf0e10cSrcweir         return (SdfEntity) ohm.get( key );
56cdf0e10cSrcweir     }
add( SdfEntity obj )57cdf0e10cSrcweir     public void add( SdfEntity obj )
58cdf0e10cSrcweir     {
59cdf0e10cSrcweir         ohm.add( obj.getId() , obj );
60cdf0e10cSrcweir     }
61cdf0e10cSrcweir 
read()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     }
write( String filename )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