88 lines
3.8 KiB
Java
88 lines
3.8 KiB
Java
|
/*
|
||
|
*****************************************************************************
|
||
|
* Copyright (C) 2000-2002, International Business Machines Corporation and *
|
||
|
* others. All Rights Reserved. *
|
||
|
*****************************************************************************
|
||
|
*
|
||
|
* $Source: /xsrl/Nsvn/icu/unicodetools/com/ibm/rbm/RBPropertiesExporter.java,v $
|
||
|
* $Date: 2002/05/20 18:53:09 $
|
||
|
* $Revision: 1.1 $
|
||
|
*
|
||
|
*****************************************************************************
|
||
|
*/
|
||
|
package com.ibm.rbm;
|
||
|
|
||
|
import java.io.*;
|
||
|
import javax.swing.*;
|
||
|
import javax.swing.filechooser.*;
|
||
|
import java.util.*;
|
||
|
|
||
|
/**
|
||
|
* This class provides a plug-in exporter utility for RBManager that outputs Java
|
||
|
* standard .properties files in the according to the file structure of Resource
|
||
|
* Bundles. Most all meta-data is lost in this export.
|
||
|
*
|
||
|
* @author Jared Jackson - Email: <a href="mailto:jjared@almaden.ibm.com">jjared@almaden.ibm.com</a>
|
||
|
* @see com.ibm.rbm.RBManager
|
||
|
*/
|
||
|
public class RBPropertiesExporter extends RBExporter {
|
||
|
|
||
|
public RBPropertiesExporter() {
|
||
|
super();
|
||
|
|
||
|
// Initialize the file chooser if necessary
|
||
|
if (chooser == null) {
|
||
|
chooser = new JFileChooser();
|
||
|
chooser.setFileFilter(new javax.swing.filechooser.FileFilter(){
|
||
|
public String getDescription() {
|
||
|
return "Base Class Properties Files";
|
||
|
}
|
||
|
public boolean accept(File f) {
|
||
|
if (f.isDirectory()) return true;
|
||
|
String name = f.getName();
|
||
|
if (name.toLowerCase().endsWith(".properties") && f.getName().indexOf("_") < 0) return true;
|
||
|
return false;
|
||
|
}
|
||
|
});
|
||
|
} // end if
|
||
|
}
|
||
|
|
||
|
protected void export(RBManager rbm) throws IOException {
|
||
|
if (rbm == null) return;
|
||
|
// Open the Save Dialog
|
||
|
int ret_val = chooser.showSaveDialog(null);
|
||
|
if (ret_val != JFileChooser.APPROVE_OPTION) return;
|
||
|
// Retrieve basic file information
|
||
|
File file = chooser.getSelectedFile(); // The file(s) we will be working with
|
||
|
File directory = new File(file.getParent()); // The directory we will be writing to
|
||
|
String base_name = file.getName(); // The base name of the files we will write
|
||
|
if (base_name == null || base_name.equals("")) base_name = rbm.getBaseClass();
|
||
|
if (base_name.toLowerCase().endsWith(".properties"))
|
||
|
base_name = base_name.substring(0,base_name.length()-11);
|
||
|
|
||
|
Vector bundle_v = rbm.getBundles();
|
||
|
for (int i=0; i < bundle_v.size(); i++) {
|
||
|
Properties prop = new Properties();
|
||
|
Bundle bundle = (Bundle)bundle_v.elementAt(i);
|
||
|
String base_enc = base_name;
|
||
|
if (bundle.encoding != null && !bundle.encoding.equals("")) base_enc = base_enc + "_" + bundle.encoding;
|
||
|
String file_name = base_enc + ".properties";
|
||
|
String header = "Resource Bundle: " + file_name + " - File automatically generated by RBManager at " + (new Date());
|
||
|
|
||
|
Vector group_v = bundle.getGroupsAsVector();
|
||
|
for (int j=0; j < group_v.size(); j++) {
|
||
|
BundleGroup group = (BundleGroup)group_v.elementAt(j);
|
||
|
Vector item_v = group.getItemsAsVector();
|
||
|
for (int k=0; k < item_v.size(); k++) {
|
||
|
BundleItem item = (BundleItem)item_v.elementAt(k);
|
||
|
prop.setProperty(item.getKey(), item.getTranslation());
|
||
|
} // end for - k
|
||
|
} // end for - j
|
||
|
|
||
|
// Write out the file
|
||
|
File write_file = new File(directory, file_name);
|
||
|
FileOutputStream fos = new FileOutputStream(write_file);
|
||
|
prop.store(fos, header);
|
||
|
} // end for - i
|
||
|
}
|
||
|
}
|