• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *****************************************************************************
3  * Copyright (C) 2000-2004, International Business Machines Corporation and  *
4  * others. All Rights Reserved.                                              *
5  *****************************************************************************
6  */
7 package com.ibm.rbm;
8 
9 import java.io.*;
10 import javax.swing.*;
11 import java.util.*;
12 
13 /**
14  * This class provides a plug-in exporter utility for RBManager that outputs Java
15  * standard .properties files in the according to the file structure of Resource
16  * Bundles. Most all meta-data is lost in this export.
17  *
18  * @author Jared Jackson
19  * @see com.ibm.rbm.RBManager
20  */
21 public class RBPropertiesExporter extends RBExporter {
22 
RBPropertiesExporter()23     public RBPropertiesExporter() {
24         super();
25 
26         // Initialize the file chooser if necessary
27         if (chooser == null) {
28             chooser = new JFileChooser();
29             chooser.setFileFilter(new javax.swing.filechooser.FileFilter(){
30                 public String getDescription() {
31                     return "Base Class Properties Files";
32                 }
33                 public boolean accept(File f) {
34                     if (f.isDirectory()) return true;
35                     String name = f.getName();
36                     if (name.toLowerCase().endsWith(".properties") && f.getName().indexOf("_") < 0) return true;
37                     return false;
38                 }
39             });
40         } // end if
41     }
42 
export(RBManager rbm)43     public void export(RBManager rbm) throws IOException {
44         if (rbm == null) return;
45         // Open the Save Dialog
46         int ret_val = chooser.showSaveDialog(null);
47         if (ret_val != JFileChooser.APPROVE_OPTION) return;
48         // Retrieve basic file information
49         File file = chooser.getSelectedFile();                  // The file(s) we will be working with
50         File directory = new File(file.getParent());            // The directory we will be writing to
51         String base_name = file.getName();                      // The base name of the files we will write
52         if (base_name == null || base_name.equals("")) base_name = rbm.getBaseClass();
53         if (base_name.toLowerCase().endsWith(".properties"))
54             base_name = base_name.substring(0,base_name.length()-11);
55 
56         Vector bundle_v = rbm.getBundles();
57         for (int i=0; i < bundle_v.size(); i++) {
58             Properties prop = new Properties();
59             Bundle bundle = (Bundle)bundle_v.elementAt(i);
60             String base_enc = base_name;
61             if (bundle.encoding != null && !bundle.encoding.equals("")) base_enc = base_enc + "_" + bundle.encoding;
62             String file_name = base_enc + ".properties";
63             String header = "Resource Bundle: " + file_name + " - File automatically generated by RBManager at " + (new Date());
64 
65             Vector group_v = bundle.getGroupsAsVector();
66             for (int j=0; j < group_v.size(); j++) {
67                 BundleGroup group = (BundleGroup)group_v.elementAt(j);
68                 Vector item_v = group.getItemsAsVector();
69                 for (int k=0; k < item_v.size(); k++) {
70                     BundleItem item = (BundleItem)item_v.elementAt(k);
71                     prop.setProperty(item.getKey(), item.getTranslation());
72                 } // end for - k
73             } // end for - j
74 
75             // Write out the file
76             File write_file = new File(directory, file_name);
77             FileOutputStream fos = new FileOutputStream(write_file);
78             prop.store(fos, header);
79         } // end for - i
80     }
81 }