On Sunday 10 February 2008 03:51, dieppe at freenetproject.org wrote:
> Author: dieppe
> Date: 2008-02-10 03:51:06 +0000 (Sun, 10 Feb 2008)
> New Revision: 17770
>
> Modified:
> trunk/apps/thingamablog/src/net/sf/thingamablog/blog/TBWeblog.java
>
trunk/apps/thingamablog/src/net/sf/thingamablog/gui/properties/TBGeneralPanel.java
>
trunk/apps/thingamablog/src/net/sf/thingamablog/gui/properties/TBWizardDialog.java
> trunk/apps/thingamablog/src/net/sf/thingamablog/xml/TBPersistFactory.java
> Log:
> Update : same as the first patch, but clean.
Doesn't look it to me. :(
You're still doing gratuitous indenting at the same time as functional
changes.
Sorry ... but if we're gonna host it, we need to maintain basic standards of
diff readability...
>
>
> Modified: trunk/apps/thingamablog/src/net/sf/thingamablog/blog/TBWeblog.java
> ===================================================================
> --- trunk/apps/thingamablog/src/net/sf/thingamablog/blog/TBWeblog.java
2008-02-09 20:27:58 UTC (rev 17769)
> +++ trunk/apps/thingamablog/src/net/sf/thingamablog/blog/TBWeblog.java
2008-02-10 03:51:06 UTC (rev 17770)
> @@ -89,6 +89,9 @@
> private String archivePath = basePath;
> private String mediaPath = basePath;
>
> + // Should be internet or freenet
> + private String type;
> +
> //private Vector outdatedTopLevelPages = new Vector();
> private Vector outdatedCategoryPages = new Vector();
> private Vector outdatedArchivePages = new Vector();
> @@ -114,9 +117,6 @@
> private File homeDir;
> private File tmplDir;
> private File outputDir;
> -
> - // Should be internet or freenet
> - private String type;
>
>
> /**
> @@ -1398,7 +1398,7 @@
> }
>
> public void setType(String type) {
> - this.type=type;
> + this.type = type;
> }
>
> public String getType() {
>
> Modified:
trunk/apps/thingamablog/src/net/sf/thingamablog/gui/properties/TBGeneralPanel.java
> ===================================================================
> ---
trunk/apps/thingamablog/src/net/sf/thingamablog/gui/properties/TBGeneralPanel.java
2008-02-09 20:27:58 UTC (rev 17769)
> +++
trunk/apps/thingamablog/src/net/sf/thingamablog/gui/properties/TBGeneralPanel.java
2008-02-10 03:51:06 UTC (rev 17770)
> @@ -30,277 +30,295 @@
> /**
> * @author Bob Tantlinger
> *
> - *
> - *
> + *
> + *
> */
> -public class TBGeneralPanel extends PropertyPanel {
> +public class TBGeneralPanel extends PropertyPanel
> +{
> /**
> - *
> + *
> */
> private static final long serialVersionUID = 1L;
> -
> +
> private static final I18n i18n =
I18n.getInstance("net.sf.thingamablog.gui.properties");
>
> private TBWeblog weblog;
> +
> + private JTextField titleField;
> + private JTextArea descrArea;
> + private JTextField basePathField;
> + private JTextField urlField;
> + private JTextField arcUrlField;
> + private JTextField mediaUrlField;
> +
> + private JComboBox localeCombo;
> + private JComboBox dateFormatCombo;
> + private JComboBox timeFormatCombo;
> + private JComboBox typeCombo;
> +
> + private static Locale LOCS[] = DateFormat.getAvailableLocales();
> + private static String TYPE[] = {"internet","freenet"};
> +
> + private String[] getDateFormats(Locale locale) {
> + String s = i18n.str("DateFormatOptions",locale);
> + return tokenize(s);
> + }
> + private String[] getTimeFormats(Locale locale) {
> + String s = i18n.str("TimeFormatOptions",locale);
> + return tokenize(s);
> + }
> + private String[] tokenize(String s) {
> + StringTokenizer st = new StringTokenizer(s,"|");
> + String[] formats = new String[st.countTokens()];
> + for (int i = 0; i < formats.length; i++) {
> + formats[i] = st.nextToken();
> + }
> + return formats;
> + }
> + /*
> + private static final String DATE_FORMATS[] =
> + {
> + "EEEE, MMMM dd, yyyy", //$NON-NLS-1$
> + "EEE, MMM dd, yyyy", //$NON-NLS-1$
> + "EEEE, dd MMMM, yyyy", //$NON-NLS-1$
> + "EEEE dd MMMM yyyy", //$NON-NLS-1$
> + "EEEE",
> + "MMMM dd, yyyy", //$NON-NLS-1$
> + "MMMM dd yyyy", //$NON-NLS-1$
> +
> + "MM/dd/yyyy", //$NON-NLS-1$
> + "MM/dd/yy", //$NON-NLS-1$
> + "dd/MM/yyyy", //$NON-NLS-1$
> + "dd/MM/yy", //$NON-NLS-1$
> +
> + "dd MMMM yyyy", //$NON-NLS-1$
> + "dd MMMM", //$NON-NLS-1$
> +
> + "yyyy-MM-dd", //$NON-NLS-1$
> + "yy-MM-dd", //$NON-NLS-1$
> + "yy.MM.dd", //$NON-NLS-1$
> + "yyyy.MM.dd", //$NON-NLS-1$
> + "EEEE, MM/dd/yyyy", //$NON-NLS-1$
> + "EEE, MM/dd/yyyy" //$NON-NLS-1$
> + };
>
> - private JTextField titleField;
> - private JTextArea descrArea;
> - private JTextField basePathField;
> - private JTextField urlField;
> - private JTextField arcUrlField;
> - private JTextField mediaUrlField;
> -
> - private JComboBox localeCombo;
> - private JComboBox dateFormatCombo;
> - private JComboBox timeFormatCombo;
> - private JComboBox typeCombo;
> -
> - private static Locale LOCS[] = DateFormat.getAvailableLocales();
> - private static String TYPE[] = {"internet","freenet"};
> -
> - private String[] getDateFormats(Locale locale) {
> - String s = i18n.str("DateFormatOptions",locale);
> - return tokenize(s);
> + private static final SimpleDateFormat GMT_TIME_FORMAT =
> + new SimpleDateFormat("k:mm.ss z"); //$NON-NLS-1$
> + private static final String TIME_FORMATS[] =
> + {
> + "h:mm a", //$NON-NLS-1$
> + "h:mm.ss a", //$NON-NLS-1$
> + "h:mm a z", //$NON-NLS-1$
> + "h:mm.ss a z", //$NON-NLS-1$
> + "h:mm a zzzz", //$NON-NLS-1$
> + "h:mm.ss a zzzz", //$NON-NLS-1$
> + "k:mm", //$NON-NLS-1$
> + "k:mm.ss", //$NON-NLS-1$
> + //GMT_TIME_FORMAT
> + };
> + */
> +
> + public TBGeneralPanel(TBWeblog blog)
> + {
> + weblog = blog;
> +
> + TextEditPopupManager popupMan = TextEditPopupManager.getInstance();
> + titleField = new JTextField();
> + titleField.setText(weblog.getTitle());
> + popupMan.registerJTextComponent(titleField);
> +
> + descrArea = new JTextArea(3, 2);
> + //descrArea.setMinimumSize(descrArea.getPreferredSize());
>
> + descrArea.setLineWrap(true);
> + descrArea.setWrapStyleWord(true);
> + descrArea.setText(weblog.getDescription());
> + popupMan.registerJTextComponent(descrArea);
> +
> +
> + //DateFormat.getAvailableLocales()
> + localeCombo = new JComboBox(LOCS);
> + //localeCombo = new JComboBox();
> + localeCombo.setSelectedItem(weblog.getLocale());
> + localeCombo.setRenderer(new ComboRenderer());
> + localeCombo.addActionListener(new ActionListener()
> + {
> + public void actionPerformed(ActionEvent e)
> + {
> + String[] dateFormats =
getDateFormats((Locale)localeCombo.getSelectedItem());
> + replaceComboItem(dateFormatCombo,dateFormats);
> + String[] timeFormats =
getTimeFormats((Locale)localeCombo.getSelectedItem());
> + replaceComboItem(timeFormatCombo,timeFormats);
>
> + }
> + });
> +
> + dateFormatCombo = new
> JComboBox(getDateFormats(weblog.getLocale()));
> +
dateFormatCombo.setSelectedItem(weblog.getPageGenerator().getDateFormat());
> + dateFormatCombo.setRenderer(new ComboRenderer());
> +
> + timeFormatCombo = new
> JComboBox(getTimeFormats(weblog.getLocale()));
> +
timeFormatCombo.setSelectedItem(weblog.getPageGenerator().getTimeFormat());
> + timeFormatCombo.setRenderer(new ComboRenderer());
> +
> + typeCombo = new JComboBox(TYPE);
> + typeCombo.setSelectedItem(weblog.getType());
> +
> + basePathField = new JTextField();
> + basePathField.setText(weblog.getBasePath());
> + popupMan.registerJTextComponent(basePathField);
> +
> + urlField = new JTextField();
> + urlField.setText(weblog.getBaseUrl());
> + popupMan.registerJTextComponent(urlField);
> +
> + arcUrlField = new JTextField();
> + arcUrlField.setText(weblog.getArchiveUrl());
> + popupMan.registerJTextComponent(arcUrlField);
> +
> + mediaUrlField = new JTextField();
> + mediaUrlField.setText(weblog.getMediaUrl());
> + popupMan.registerJTextComponent(mediaUrlField);
> +
> + setLayout(new BorderLayout(5, 5));
> + setBorder(new EmptyBorder(5, 5, 5, 5));
> + LabelledItemPanel lip1 = new LabelledItemPanel();
> + lip1.setBorder(new TitledBorder(i18n.str("weblog")));
> //$NON-NLS-1$
> + lip1.addItem(i18n.str("site_title"), titleField); //$NON-NLS-1$
> + //JPanel descPanel = new JPanel(new BorderLayout());
> + //descPanel.add(new JScrollPane(descrArea),
> BorderLayout.CENTER);
> + //lip1.addItem("Description", descPanel);
> + lip1.addItem(i18n.str("description"), new
JScrollPane(descrArea)); //$NON-NLS-1$
> + lip1.addItem(i18n.str("language"), localeCombo); //$NON-NLS-1$
> + lip1.addItem(i18n.str("date_format"), dateFormatCombo);
> //$NON-NLS-1$
> + lip1.addItem(i18n.str("time_format"), timeFormatCombo);
> //$NON-NLS-1$
> + lip1.addItem(i18n.str("type"), typeCombo);
> +
> + LabelledItemPanel lip2 = new LabelledItemPanel();
> + lip2.setBorder(new TitledBorder(i18n.str("location")));
> //$NON-NLS-1$
> + lip2.addItem(i18n.str("base_path"), basePathField);
> //$NON-NLS-1$
> + lip2.addItem(i18n.str("base_url"), urlField); //$NON-NLS-1$
> + lip2.addItem(i18n.str("archive_url"), arcUrlField);
> //$NON-NLS-1$
> + lip2.addItem(i18n.str("media_url"), mediaUrlField);
> //$NON-NLS-1$
> +
> + add(lip1, BorderLayout.CENTER);
> + add(lip2, BorderLayout.SOUTH);
> +
> }
> - private String[] getTimeFormats(Locale locale) {
> - String s = i18n.str("TimeFormatOptions",locale);
> - return tokenize(s);
> - }
> - private String[] tokenize(String s) {
> - StringTokenizer st = new StringTokenizer(s,"|");
> - String[] formats = new String[st.countTokens()];
> - for (int i = 0; i < formats.length; i++) {
> - formats[i] = st.nextToken();
> - }
> - return formats;
> - }
> - /*
> - private static final String DATE_FORMATS[] =
> - {
> - "EEEE, MMMM dd, yyyy", //$NON-NLS-1$
> - "EEE, MMM dd, yyyy", //$NON-NLS-1$
> - "EEEE, dd MMMM, yyyy", //$NON-NLS-1$
> - "EEEE dd MMMM yyyy", //$NON-NLS-1$
> - "EEEE",
> - "MMMM dd, yyyy", //$NON-NLS-1$
> - "MMMM dd yyyy", //$NON-NLS-1$
> -
> - "MM/dd/yyyy", //$NON-NLS-1$
> - "MM/dd/yy", //$NON-NLS-1$
> - "dd/MM/yyyy", //$NON-NLS-1$
> - "dd/MM/yy", //$NON-NLS-1$
> -
> - "dd MMMM yyyy", //$NON-NLS-1$
> - "dd MMMM", //$NON-NLS-1$
> -
> - "yyyy-MM-dd", //$NON-NLS-1$
> - "yy-MM-dd", //$NON-NLS-1$
> - "yy.MM.dd", //$NON-NLS-1$
> - "yyyy.MM.dd", //$NON-NLS-1$
> - "EEEE, MM/dd/yyyy", //$NON-NLS-1$
> - "EEE, MM/dd/yyyy" //$NON-NLS-1$
> - };
> -
> - private static final SimpleDateFormat GMT_TIME_FORMAT =
> - new SimpleDateFormat("k:mm.ss z"); //$NON-NLS-1$
> - private static final String TIME_FORMATS[] =
> - {
> - "h:mm a", //$NON-NLS-1$
> - "h:mm.ss a", //$NON-NLS-1$
> - "h:mm a z", //$NON-NLS-1$
> - "h:mm.ss a z", //$NON-NLS-1$
> - "h:mm a zzzz", //$NON-NLS-1$
> - "h:mm.ss a zzzz", //$NON-NLS-1$
> - "k:mm", //$NON-NLS-1$
> - "k:mm.ss", //$NON-NLS-1$
> - //GMT_TIME_FORMAT
> - };
> - */
> -
> - public TBGeneralPanel(TBWeblog blog) {
> - weblog = blog;
> -
> - TextEditPopupManager popupMan = TextEditPopupManager.getInstance();
> - titleField = new JTextField();
> - titleField.setText(weblog.getTitle());
> - popupMan.registerJTextComponent(titleField);
> -
> - descrArea = new JTextArea(3, 2);
> - //descrArea.setMinimumSize(descrArea.getPreferredSize());
> - descrArea.setLineWrap(true);
> - descrArea.setWrapStyleWord(true);
> - descrArea.setText(weblog.getDescription());
> - popupMan.registerJTextComponent(descrArea);
> -
> -
> - //DateFormat.getAvailableLocales()
> - localeCombo = new JComboBox(LOCS);
> - //localeCombo = new JComboBox();
> - localeCombo.setSelectedItem(weblog.getLocale());
> - localeCombo.setRenderer(new ComboRenderer());
> - localeCombo.addActionListener(new ActionListener() {
> - public void actionPerformed(ActionEvent e) {
> - String[] dateFormats =
getDateFormats((Locale)localeCombo.getSelectedItem());
> - replaceComboItem(dateFormatCombo,dateFormats);
> - String[] timeFormats =
getTimeFormats((Locale)localeCombo.getSelectedItem());
> - replaceComboItem(timeFormatCombo,timeFormats);
> - }
> - });
> -
> - dateFormatCombo = new
JComboBox(getDateFormats(weblog.getLocale()));
> -
dateFormatCombo.setSelectedItem(weblog.getPageGenerator().getDateFormat());
> - dateFormatCombo.setRenderer(new ComboRenderer());
> -
> - timeFormatCombo = new
JComboBox(getTimeFormats(weblog.getLocale()));
> -
timeFormatCombo.setSelectedItem(weblog.getPageGenerator().getTimeFormat());
> - timeFormatCombo.setRenderer(new ComboRenderer());
> -
> - typeCombo = new JComboBox(TYPE);
> - typeCombo.setSelectedItem(weblog.getType());
> -
> - basePathField = new JTextField();
> - basePathField.setText(weblog.getBasePath());
> - popupMan.registerJTextComponent(basePathField);
> -
> - urlField = new JTextField();
> - urlField.setText(weblog.getBaseUrl());
> - popupMan.registerJTextComponent(urlField);
> -
> - arcUrlField = new JTextField();
> - arcUrlField.setText(weblog.getArchiveUrl());
> - popupMan.registerJTextComponent(arcUrlField);
> -
> - mediaUrlField = new JTextField();
> - mediaUrlField.setText(weblog.getMediaUrl());
> - popupMan.registerJTextComponent(mediaUrlField);
> -
> - setLayout(new BorderLayout(5, 5));
> - setBorder(new EmptyBorder(5, 5, 5, 5));
> - LabelledItemPanel lip1 = new LabelledItemPanel();
> - lip1.setBorder(new TitledBorder(i18n.str("weblog"))); //$NON-NLS-1$
> - lip1.addItem(i18n.str("site_title"), titleField); //$NON-NLS-1$
> - //JPanel descPanel = new JPanel(new BorderLayout());
> - //descPanel.add(new JScrollPane(descrArea), BorderLayout.CENTER);
> - //lip1.addItem("Description", descPanel);
> - lip1.addItem(i18n.str("description"), new
JScrollPane(descrArea)); //$NON-NLS-1$
> - lip1.addItem(i18n.str("language"), localeCombo); //$NON-NLS-1$
> - lip1.addItem(i18n.str("date_format"),
dateFormatCombo); //$NON-NLS-1$
> - lip1.addItem(i18n.str("time_format"),
timeFormatCombo); //$NON-NLS-1$
> - lip1.addItem(i18n.str("type"), typeCombo);
> -
> - LabelledItemPanel lip2 = new LabelledItemPanel();
> - lip2.setBorder(new
TitledBorder(i18n.str("location"))); //$NON-NLS-1$
> - lip2.addItem(i18n.str("base_path"), basePathField); //$NON-NLS-1$
> - lip2.addItem(i18n.str("base_url"), urlField); //$NON-NLS-1$
> - lip2.addItem(i18n.str("archive_url"), arcUrlField); //$NON-NLS-1$
> - lip2.addItem(i18n.str("media_url"), mediaUrlField); //$NON-NLS-1$
>
> -
> - add(lip1, BorderLayout.CENTER);
> - add(lip2, BorderLayout.SOUTH);
> -
> - }
> private void replaceComboItem(JComboBox combo, String[] items) {
> - combo.removeAllItems();
> - for (int i = 0; i < items.length; i++) {
> - combo.addItem(items[i]);
> - }
> - }
> + combo.removeAllItems();
> + for (int i = 0; i < items.length; i++) {
> + combo.addItem(items[i]);
> + }
> + }
>
> /* (non-Javadoc)
> * @see
net.sf.thingamablog.gui.properties.PropertyPanel#savePropertiesToWeblog()
> */
> - public void saveProperties() {
> - weblog.setPublishAll(true);
> + public void saveProperties()
> + {
> + weblog.setPublishAll(true);
> weblog.setBlogUrls(
> - basePathField.getText(), urlField.getText(),
> - arcUrlField.getText(), mediaUrlField.getText());
> + basePathField.getText(), urlField.getText(),
> + arcUrlField.getText(), mediaUrlField.getText());
> weblog.setLocale((Locale)localeCombo.getSelectedItem());
> weblog.setTitle(titleField.getText());
> weblog.setDescription(descrArea.getText());
>
weblog.getPageGenerator().setDateFormat(dateFormatCombo.getSelectedItem().toString());
> -
weblog.getPageGenerator().setTimeFormat(timeFormatCombo.getSelectedItem().toString());
> - weblog.setType(typeCombo.getSelectedItem().toString());
> +
weblog.getPageGenerator().setTimeFormat(timeFormatCombo.getSelectedItem().toString());
> + weblog.setType(typeCombo.getSelectedItem().toString());
> }
>
> +
>
> -
> - public boolean isValidData() {
> - String base = urlField.getText();
> - String arc = arcUrlField.getText();
> - String media = mediaUrlField.getText();
> -
> - if(basePathField.getText() == null ||
basePathField.getText().equals("")) //$NON-NLS-1$
> - {
> - JOptionPane.showMessageDialog(this,
> - i18n.str("no_base_path_prompt"), //$NON-NLS-1$
> - i18n.str("warning"),
JOptionPane.WARNING_MESSAGE); //$NON-NLS-1$
> - return false;
> - }
> -
> - if(typeCombo.getSelectedItem().equals("internet") &&
(!isValidUrl(base) || !isValidUrl(arc) || !isValidUrl(media)))
> - return false;
> -
> - if(typeCombo.getSelectedItem().equals("freenet") &&
(!isValidKey(base) || !isValidKey(arc) || !isValidKey(media)))
> - return false;
> -
> - if(!arc.startsWith(base)) {
> - JOptionPane.showMessageDialog(this,
> - i18n.str("bad_arc_url_prompt"), //$NON-NLS-1$
> - i18n.str("warning"),
JOptionPane.WARNING_MESSAGE); //$NON-NLS-1$
> -
> - return false;
> - }
> -
> - if(!media.startsWith(base)) {
> - JOptionPane.showMessageDialog(this,
> - i18n.str("bad_media_url_prompt"), //$NON-NLS-1$
> - i18n.str("warning"),
JOptionPane.WARNING_MESSAGE); //$NON-NLS-1$
> -
> - return false;
> - }
> -
> - return true;
> + public boolean isValidData()
> + {
> + String base = urlField.getText();
> + String arc = arcUrlField.getText();
> + String media = mediaUrlField.getText();
> +
> + if(basePathField.getText() == null ||
basePathField.getText().equals("")) //$NON-NLS-1$
> + {
> + JOptionPane.showMessageDialog(this,
> + i18n.str("no_base_path_prompt"), //$NON-NLS-1$
> + i18n.str("warning"),
> JOptionPane.WARNING_MESSAGE); //$NON-NLS-1$
> + return false;
> + }
> +
> + if(typeCombo.getSelectedItem().toString().equals("internet") &&
(!isValidUrl(base) || !isValidUrl(arc) || !isValidUrl(media)))
> + return false;
> +
> + if(typeCombo.getSelectedItem().toString().equals("freenet")
&& (!isValidSSK(base)) || !isValidSSK(arc) || !isValidSSK(media))
> + return false;
> +
> + if(!arc.startsWith(base))
> + {
> + JOptionPane.showMessageDialog(this,
> + i18n.str("bad_arc_url_prompt"), //$NON-NLS-1$
> + i18n.str("warning"),
> JOptionPane.WARNING_MESSAGE); //$NON-NLS-1$
> +
> + return false;
> + }
> +
> + if(!media.startsWith(base))
> + {
> + JOptionPane.showMessageDialog(this,
> + i18n.str("bad_media_url_prompt"), //$NON-NLS-1$
> + i18n.str("warning"),
> JOptionPane.WARNING_MESSAGE); //$NON-NLS-1$
> +
> + return false;
> + }
> +
> + return true;
> }
>
> - private boolean isValidUrl(String u) {
> - try {
> - new URL(u);
> - } catch(Exception ex)//malformed url
> - {
> - JOptionPane.showMessageDialog(this,
> - u + i18n.str("invalid_url_prompt"), //$NON-NLS-1$
> - i18n.str("warning"),
JOptionPane.WARNING_MESSAGE); //$NON-NLS-1$
> - return false;
> - }
> - return true;
> + private boolean isValidUrl(String u)
> + {
> + try
> + {
> + new URL(u);
> + }
> + catch(Exception ex)//malformed url
> + {
> + JOptionPane.showMessageDialog(this,
> + u + i18n.str("invalid_url_prompt"),
> //$NON-NLS-1$
> + i18n.str("warning"),
> JOptionPane.WARNING_MESSAGE); //$NON-NLS-1$
> + return false;
> + }
> + return true;
> }
>
> - private boolean isValidKey(String key) {
> - // TODO : Check if the key match a USK key
> + private boolean isValidSSK(String u)
> + {
> + // TODO : Check if u match a SSK key
> return true;
> }
> +
>
> - private class ComboRenderer extends DefaultListCellRenderer {
> - /**
> - *
> + private class ComboRenderer extends DefaultListCellRenderer
> + {
> + /**
> + *
> */
> private static final long serialVersionUID = 1L;
> private Date date = new Date();
> -
> - public Component getListCellRendererComponent(JList list,
> - Object value, int index, boolean isSelected, boolean
cellHasFocus) {
> - if(value instanceof Locale) {
> - Locale loc = (Locale)value;
> - value = loc.getDisplayName();
> - } else {
> - Locale loc = (Locale)localeCombo.getSelectedItem();
> - SimpleDateFormat df = new
SimpleDateFormat(value.toString(),loc);
> - value = df.format(date);
> - }
> -
> - return super.getListCellRendererComponent(
> - list, value, index, isSelected, cellHasFocus);
> - }
> - }
> -
> +
> + public Component getListCellRendererComponent(JList list,
> + Object value, int index, boolean isSelected, boolean
> cellHasFocus)
> + {
> + if(value instanceof Locale)
> + {
> + Locale loc = (Locale)value;
> + value = loc.getDisplayName();
> + }
> + else
> + {
> + Locale loc =
> (Locale)localeCombo.getSelectedItem();
> + SimpleDateFormat df = new
> SimpleDateFormat(value.toString(),loc);
> + value = df.format(date);
>
> + }
> +
> + return super.getListCellRendererComponent(
> + list, value, index, isSelected, cellHasFocus);
> + }
> + }
> +
> }
>
> Modified:
trunk/apps/thingamablog/src/net/sf/thingamablog/gui/properties/TBWizardDialog.java
> ===================================================================
> ---
trunk/apps/thingamablog/src/net/sf/thingamablog/gui/properties/TBWizardDialog.java
2008-02-09 20:27:58 UTC (rev 17769)
> +++
trunk/apps/thingamablog/src/net/sf/thingamablog/gui/properties/TBWizardDialog.java
2008-02-10 03:51:06 UTC (rev 17770)
> @@ -52,200 +52,216 @@
> /**
> * @author Bob Tantlinger
> *
> - *
> - *
> + *
> + *
> */
> -public class TBWizardDialog extends JDialog {
> +public class TBWizardDialog extends JDialog
> +{
> /**
> - *
> + *
> */
> private static final long serialVersionUID = 1L;
> -
> +
> private static final I18n i18n =
I18n.getInstance("net.sf.thingamablog.gui.properties"); //$NON-NLS-1$
>
> private static final String CANCEL = i18n.str("cancel"); //$NON-NLS-1$
> - private static final String FINISH = i18n.str("finish"); //$NON-NLS-1$
> -
> - private CardLayout wizLayout;
> - private JPanel wizPanel;
> -
> - private PropertyPanel starterPanel;
> - private TitleDescrPanel titlePanel;
> - private CategoriesPanel catPanel;
> - private AuthorsPanel authPanel;
> + private static final String FINISH = i18n.str("finish");
> //$NON-NLS-1$
> +
> + private CardLayout wizLayout;
> + private JPanel wizPanel;
> +
> + private PropertyPanel starterPanel;
> + private TitleDescrPanel titlePanel;
> + private CategoriesPanel catPanel;
> + private AuthorsPanel authPanel;
> private PropertyPanel emailPanel;
> - private PropertyPanel templPanel;
> - private PropertyPanel transportPanel;
> - private PropertyPanel donePanel;
> - private Vector panels = new Vector();
> + private PropertyPanel templPanel;
> + private PropertyPanel transportPanel;
> + private PropertyPanel donePanel;
> + private Vector panels = new Vector();
> +
> + private JButton nextButton, backButton, doneButton;
> +
> + private boolean isCancelled;
> +
> + private TBWeblog weblog;
>
> - private JButton nextButton, backButton, doneButton;
> + private TextEditPopupManager popupManager =
TextEditPopupManager.getInstance();
>
> - private boolean isCancelled;
> -
> - private TBWeblog weblog;
> -
> - private TextEditPopupManager popupManager =
TextEditPopupManager.getInstance();
> -
> private TemplatePack selectedPack;
> -
> - public TBWizardDialog(Frame f, File dir, WeblogBackend backend) {
> - super(f, true);
> - setTitle(i18n.str("new_weblog")); //$NON-NLS-1$
> +
> + public TBWizardDialog(Frame f, File dir, WeblogBackend backend)
> + {
> + super(f, true);
> + setTitle(i18n.str("new_weblog")); //$NON-NLS-1$
> +
> + WindowAdapter windowAdapter = new WindowAdapter()
> + {
> + public void windowClosing(WindowEvent windowEvent)
> + {
> + cancelDialog();
> + }
> + };
> + addWindowListener(windowAdapter);
> +
> + weblog = new TBWeblog(dir);
> + weblog.setBackend(backend);
> + weblog.setPublishTransport(new
net.sf.thingamablog.transport.FTPTransport());
> + //weblog.setAuthorStore(authStore);
> + //weblog.setCategoryStore(catStore);
> +
> + wizLayout = new CardLayout();
> + wizPanel = new JPanel(wizLayout);
> +
> + starterPanel = new StarterPanel();
> + starterPanel.setBorder(new EmptyBorder(10, 10, 10, 10));
> + panels.add(starterPanel);
> +
> + titlePanel = new TitleDescrPanel();
> + titlePanel.setBorder(new EmptyBorder(10, 10, 10, 10));
> + panels.add(titlePanel);
> +
> + catPanel = new CategoriesPanel();
> + catPanel.setBorder(new EmptyBorder(10, 10, 10, 10));
> + panels.add(catPanel);
> +
> + authPanel = new AuthorsPanel();
> + authPanel.setBorder(new EmptyBorder(10, 10, 10, 10));
> + panels.add(authPanel);
>
> - WindowAdapter windowAdapter = new WindowAdapter() {
> - public void windowClosing(WindowEvent windowEvent) {
> - cancelDialog();
> - }
> - };
> - addWindowListener(windowAdapter);
> -
> - weblog = new TBWeblog(dir);
> - weblog.setBackend(backend);
> - weblog.setPublishTransport(new
net.sf.thingamablog.transport.FTPTransport());
> - //weblog.setAuthorStore(authStore);
> - //weblog.setCategoryStore(catStore);
> -
> - wizLayout = new CardLayout();
> - wizPanel = new JPanel(wizLayout);
> -
> - starterPanel = new StarterPanel();
> - starterPanel.setBorder(new EmptyBorder(10, 10, 10, 10));
> - panels.add(starterPanel);
> -
> - titlePanel = new TitleDescrPanel();
> - titlePanel.setBorder(new EmptyBorder(10, 10, 10, 10));
> - panels.add(titlePanel);
> -
> - catPanel = new CategoriesPanel();
> - catPanel.setBorder(new EmptyBorder(10, 10, 10, 10));
> - panels.add(catPanel);
> -
> - authPanel = new AuthorsPanel();
> - authPanel.setBorder(new EmptyBorder(10, 10, 10, 10));
> - panels.add(authPanel);
> -
> emailPanel = new EmailPanel();
> emailPanel.setBorder(new EmptyBorder(10, 10, 10, 10));
> panels.add(emailPanel);
> -
> - templPanel = new TemplatePanel();
> - templPanel.setBorder(new EmptyBorder(10, 10, 10, 10));
> - panels.add(templPanel);
> -
> - transportPanel = new TransportPanel();
> - transportPanel.setBorder(new EmptyBorder(10, 10, 10, 10));
> - panels.add(transportPanel);
> -
> - donePanel = new DonePanel();
> - donePanel.setBorder(new EmptyBorder(10, 10, 10, 10));
> - panels.add(donePanel);
> -
> - wizPanel.add(starterPanel, "1"); //$NON-NLS-1$
> - wizPanel.add(titlePanel, "2"); //$NON-NLS-1$
> - wizPanel.add(catPanel, "3"); //$NON-NLS-1$
> - wizPanel.add(authPanel, "4"); //$NON-NLS-1$
> +
> + templPanel = new TemplatePanel();
> + templPanel.setBorder(new EmptyBorder(10, 10, 10, 10));
> + panels.add(templPanel);
> +
> + transportPanel = new TransportPanel();
> + transportPanel.setBorder(new EmptyBorder(10, 10, 10, 10));
> + panels.add(transportPanel);
> +
> + donePanel = new DonePanel();
> + donePanel.setBorder(new EmptyBorder(10, 10, 10, 10));
> + panels.add(donePanel);
> +
> + wizPanel.add(starterPanel, "1"); //$NON-NLS-1$
> + wizPanel.add(titlePanel, "2"); //$NON-NLS-1$
> + wizPanel.add(catPanel, "3"); //$NON-NLS-1$
> + wizPanel.add(authPanel, "4"); //$NON-NLS-1$
> wizPanel.add(emailPanel, "5"); //$NON-NLS-1$
> - wizPanel.add(templPanel, "6"); //$NON-NLS-1$
> - wizPanel.add(transportPanel, "7"); //$NON-NLS-1$
> - wizPanel.add(donePanel, "8"); //$NON-NLS-1$
> -
> - ActionListener listener = new ButtonHandler();
> - nextButton = new JButton(i18n.str("next-")); //$NON-NLS-1$
> - nextButton.addActionListener(listener);
> - backButton = new JButton(i18n.str("-back")); //$NON-NLS-1$
> - backButton.setEnabled(false);
> - backButton.addActionListener(listener);
> - doneButton = new JButton(CANCEL);
> - doneButton.addActionListener(listener);
> -
> - JPanel controlPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
> - controlPanel.setBorder(new EtchedBorder());
> - JPanel buttonPanel = new JPanel(new GridLayout(1, 3, 5, 5));
> - buttonPanel.add(backButton);
> - buttonPanel.add(nextButton);
> - buttonPanel.add(doneButton);
> - controlPanel.add(buttonPanel);
> -
> - JLabel img = new JLabel();
> - img.setVerticalAlignment(SwingConstants.TOP);
> - img.setOpaque(true);
> - img.setBackground(Color.WHITE);
> -
img.setIcon(UIUtils.getIcon(UIUtils.MISC, "wizard.jpg")); //$NON-NLS-1$
> -
> - getContentPane().add(wizPanel, BorderLayout.CENTER);
> - getContentPane().add(controlPanel, BorderLayout.SOUTH);
> - getContentPane().add(img, BorderLayout.WEST);
> -
> - pack();
> + wizPanel.add(templPanel, "6"); //$NON-NLS-1$
> + wizPanel.add(transportPanel, "7"); //$NON-NLS-1$
> + wizPanel.add(donePanel, "8"); //$NON-NLS-1$
> +
> + ActionListener listener = new ButtonHandler();
> + nextButton = new JButton(i18n.str("next-")); //$NON-NLS-1$
> + nextButton.addActionListener(listener);
> + backButton = new JButton(i18n.str("-back")); //$NON-NLS-1$
> + backButton.setEnabled(false);
> + backButton.addActionListener(listener);
> + doneButton = new JButton(CANCEL);
> + doneButton.addActionListener(listener);
> +
> + JPanel controlPanel = new JPanel(new
> FlowLayout(FlowLayout.RIGHT));
> + controlPanel.setBorder(new EtchedBorder());
> + JPanel buttonPanel = new JPanel(new GridLayout(1, 3, 5, 5));
>
> + buttonPanel.add(backButton);
> + buttonPanel.add(nextButton);
> + buttonPanel.add(doneButton);
> + controlPanel.add(buttonPanel);
> +
> + JLabel img = new JLabel();
> + img.setVerticalAlignment(SwingConstants.TOP);
> + img.setOpaque(true);
> + img.setBackground(Color.WHITE);
> + img.setIcon(UIUtils.getIcon(UIUtils.MISC, "wizard.jpg"));
> //$NON-NLS-1$
> +
> + getContentPane().add(wizPanel, BorderLayout.CENTER);
> + getContentPane().add(controlPanel, BorderLayout.SOUTH);
> + getContentPane().add(img, BorderLayout.WEST);
> +
> + pack();
> setSize(560, getHeight());
> - setResizable(false);
> - }
> -
> - public TBWeblog getWeblog() {
> - return weblog;
> - }
> -
> - public boolean hasUserCancelled() {
> - return isCancelled;
> - }
> -
> - private void doFinish() {
> - /*for(int i = 0; i < panels.size(); i++)
> - {
> - PropertyPanel p =
(PropertyPanel)panels.elementAt(i);
> - p.saveProperties();
> - }*/
> + setResizable(false);
> + }
> +
> + public TBWeblog getWeblog()
> + {
> + return weblog;
> + }
> +
> + public boolean hasUserCancelled()
> + {
> + return isCancelled;
> + }
> +
> + private void doFinish()
> + {
> + /*for(int i = 0; i < panels.size(); i++)
> + {
> + PropertyPanel p = (PropertyPanel)panels.elementAt(i);
> + p.saveProperties();
> + }*/
>
> - try {
> + try
> + {
> selectedPack.installPack(weblog.getHomeDirectory());
> - } catch(Exception ex) {
> + }
> + catch(Exception ex)
> + {
> UIUtils.showError(this, ex);
> }
> +
> + //add a couple ping services
> + WeblogsDotComPing ping = new WeblogsDotComPing();
>
> - //add a couple ping services
> - WeblogsDotComPing ping = new WeblogsDotComPing();
> -
> //removed because the TAMB ping server has been shutdown...
> - /*ping.setServiceName("Updated Thingamablogs");
> -
ping.setServiceUrl("http://thingamablog.sourceforge.net/rpc.php");
> - ping.setEnabled(true);
> - weblog.addPingService(ping);*/
> -
> - ping = new WeblogsDotComPing();
> - ping.setServiceName("weblogs.com"); //$NON-NLS-1$
> - ping.setServiceUrl("http://rpc.weblogs.com/RPC2"); //$NON-NLS-1$
> - ping.setEnabled(false);
> - weblog.addPingService(ping);
> -
> - dispose();
> - }
> + /*ping.setServiceName("Updated Thingamablogs");
> +
> ping.setServiceUrl("http://thingamablog.sourceforge.net/rpc.php");
> + ping.setEnabled(true);
> + weblog.addPingService(ping);*/
> +
> + ping = new WeblogsDotComPing();
> + ping.setServiceName("weblogs.com"); //$NON-NLS-1$
> + ping.setServiceUrl("http://rpc.weblogs.com/RPC2"); //$NON-NLS-1$
> + ping.setEnabled(false);
> + weblog.addPingService(ping);
> +
> + dispose();
> + }
> +
> + private void cancelDialog()
> + {
> + isCancelled = true;
> + try{
> + weblog.deleteAll();
> + }catch(BackendException ex){}
> + dispose();
> + }
>
> - private void cancelDialog() {
> - isCancelled = true;
> - try{
> - weblog.deleteAll();
> - }catch(BackendException ex){}
> - dispose();
> - }
> -
> - public void dispose() {
> - WeblogPreviewer.getInstance().clearPreviewData();
> + public void dispose()
> + {
> + WeblogPreviewer.getInstance().clearPreviewData();
> super.dispose();
> }
>
> +
> + private JLabel createHeaderLabel(String text)
> + {
> + JLabel label = new JLabel("<html><h2>" + text
+ "</h2></html>"); //$NON-NLS-1$ //$NON-NLS-2$
> + return label;
> + }
>
> - private JLabel createHeaderLabel(String text) {
> - JLabel label = new JLabel("<html><h2>" + text
+ "</h2></html>"); //$NON-NLS-1$ //$NON-NLS-2$
> - return label;
> - }
> +
>
> -
> -
> - private PropertyPanel getCurrentPanel() {
> - for(int i = 0; i < panels.size(); i++) {
> + private PropertyPanel getCurrentPanel()
> + {
> + for(int i = 0; i < panels.size(); i++)
> + {
> PropertyPanel p = (PropertyPanel)panels.elementAt(i);
> - if(p.isVisible()) {
> + if(p.isVisible())
> + {
> //return p.isValidData();
> return p;
> }
> @@ -253,224 +269,260 @@
>
> return null;
> }
> -
> - private class ButtonHandler implements ActionListener {
> - public void actionPerformed(ActionEvent e) {
> - if(e.getSource() == nextButton) {
> - if(!donePanel.isVisible()) {
> - //if(isCurrentPanelValid())
> +
> + private class ButtonHandler implements ActionListener
> + {
> + public void actionPerformed(ActionEvent e)
> + {
> + if(e.getSource() == nextButton)
> + {
> + if(!donePanel.isVisible())
> + {
> + //if(isCurrentPanelValid())
> PropertyPanel p = getCurrentPanel();
> - if(p != null && p.isValidData()) {
> - p.saveProperties();
> + if(p != null && p.isValidData())
> + {
> + p.saveProperties();
> wizLayout.next(wizPanel);
>
> }
> - }
> -
> - if(donePanel.isVisible()) {
> - doneButton.setText(FINISH);
> - nextButton.setEnabled(false);
> - }
> - backButton.setEnabled(true);
> - } else if(e.getSource() == backButton) {
> - if(!starterPanel.isVisible())
> - wizLayout.previous(wizPanel);
> - if(starterPanel.isVisible())
> - backButton.setEnabled(false);
> - if(doneButton.getText().equals(FINISH))
> - doneButton.setText(CANCEL);
> - nextButton.setEnabled(true);
> - } else if(e.getSource() == doneButton) {
> - //the new Weblog was canceled, so delete the
> - //directory structure that was created when
> - //the Weblog was instantiated
> - if(doneButton.getText().equals(FINISH)) {
> - doFinish();
> - } else {
> - cancelDialog();
> - }
> - }
> - }
> - }
> -
> -
> -
> -
> - private class StarterPanel extends PropertyPanel {
> - /**
> - *
> + }
> +
>
> + if(donePanel.isVisible())
> + {
> + doneButton.setText(FINISH);
> + nextButton.setEnabled(false);
> + }
> + backButton.setEnabled(true);
> + }
> + else if(e.getSource() == backButton)
> + {
> + if(!starterPanel.isVisible())
> + wizLayout.previous(wizPanel);
>
> + if(starterPanel.isVisible())
> + backButton.setEnabled(false);
>
> + if(doneButton.getText().equals(FINISH))
> + doneButton.setText(CANCEL);
> + nextButton.setEnabled(true);
> + }
> + else if(e.getSource() == doneButton)
> + {
> + //the new Weblog was canceled, so delete the
> + //directory structure that was created when
> + //the Weblog was instantiated
> + if(doneButton.getText().equals(FINISH))
> + {
> + doFinish();
> + }
> + else
> + {
> + cancelDialog();
> + }
>
> + }
> + }
> + }
> +
> +
> +
> +
> + private class StarterPanel extends PropertyPanel
> + {
> + /**
> + *
> */
> private static final long serialVersionUID = 1L;
> private JTextField pathField = new JTextField(20);
> - private JTextField urlField = new JTextField(20);
> - private String TYPE[] = {"internet","freenet"};
> - private JComboBox typeCombo = new JComboBox(TYPE);
> -
> - public StarterPanel() {
> - JLabel header =
createHeaderLabel(i18n.str("weblog_wizard")); //$NON-NLS-1$
> - String text =
> - i18n.str("welcome_panel_text"); //$NON-NLS-1$
> -
> -
> - LabelledItemPanel lip = new LabelledItemPanel();
> - lip.addItem(i18n.str("base_path"), pathField); //$NON-NLS-1$
> - lip.addItem(i18n.str("base_url"), urlField); //$NON-NLS-1$
> - lip.addItem(i18n.str("type"), typeCombo);
> -
> - popupManager.registerJTextComponent(pathField);
> - popupManager.registerJTextComponent(urlField);
> -
> - setLayout(new BorderLayout());
> - add(header, BorderLayout.NORTH);
> - add(new MultilineText(text), BorderLayout.CENTER);
> - add(lip, BorderLayout.SOUTH);
> - }
> -
> - public boolean isValidData() {
> + private JTextField urlField = new JTextField(20);
> + private String TYPE[]={"internet","freenet"};
> + private JComboBox typeCombo = new JComboBox(TYPE);
> +
> + public StarterPanel()
> + {
> + JLabel header =
createHeaderLabel(i18n.str("weblog_wizard")); //$NON-NLS-1$
> + String text =
> + i18n.str("welcome_panel_text"); //$NON-NLS-1$
> +
> +
> + LabelledItemPanel lip = new LabelledItemPanel();
> + lip.addItem(i18n.str("base_path"), pathField);
> //$NON-NLS-1$
> + lip.addItem(i18n.str("base_url"), urlField);
> //$NON-NLS-1$
> + lip.addItem(i18n.str("type"), typeCombo);
> +
> + popupManager.registerJTextComponent(pathField);
> + popupManager.registerJTextComponent(urlField);
> +
> + setLayout(new BorderLayout());
> + add(header, BorderLayout.NORTH);
> + add(new MultilineText(text), BorderLayout.CENTER);
> + add(lip, BorderLayout.SOUTH);
> + }
> +
> + public boolean isValidData()
> + {
> if(pathField.getText().equals("")) //$NON-NLS-1$
> {
> JOptionPane.showMessageDialog(TBWizardDialog.this,
> - i18n.str("invalid_path_prompt"),
i18n.str("invalid_path"), //$NON-NLS-1$ //$NON-NLS-2$
> - JOptionPane.WARNING_MESSAGE);
> + i18n.str("invalid_path_prompt"),
i18n.str("invalid_path"), //$NON-NLS-1$ //$NON-NLS-2$
> + JOptionPane.WARNING_MESSAGE);
> return false;
> }
>
> if(urlField.getText().equals("")) //$NON-NLS-1$
> {
> JOptionPane.showMessageDialog(TBWizardDialog.this,
> - i18n.str("invalid_url_prompt"),
i18n.str("invalid_url"), //$NON-NLS-1$ //$NON-NLS-2$
> - JOptionPane.WARNING_MESSAGE);
> + i18n.str("invalid_url_prompt"),
i18n.str("invalid_url"), //$NON-NLS-1$ //$NON-NLS-2$
> + JOptionPane.WARNING_MESSAGE);
> return false;
> }
> -
> - if(typeCombo.getSelectedItem().toString().equals("internet")) {
> - try {
> - new URL(urlField.getText());
> - } catch(MalformedURLException ex) //invalid url
> + if (typeCombo.getSelectedItem().toString().equals("internet"))
{
> + try
> + {
> + new URL(urlField.getText());
>
> + }
> + catch(MalformedURLException ex) //invalid url
> + {
> +
> + // Display a warning message instead of just
> put http:// at the
beginning of the url, in case the user enter a USK key and didn't use the
type combobox
> + urlField.setText("http://" +
> urlField.getText()); //$NON-NLS-1$
> +
JOptionPane.showMessageDialog(TBWizardDialog.this,
> + i18n.str("invalid_url_prompt"),
i18n.str("invalid_url"), //$NON-NLS-1$ //$NON-NLS-2$
> + JOptionPane.WARNING_MESSAGE);
> + return false;
> + }
> + }
> + if (typeCombo.getSelectedItem().toString().equals("freenet"))
> + return isValidSSK(urlField.getText());
> +
> + return true;
> + }
> + private boolean isValidSSK(String u)
> {
> - urlField.setText("http://" +
urlField.getText()); //$NON-NLS-1$
> + // TODO : Check if u match a SSK key
> + return true;
> }
> - } else {
> - return isValidKey(urlField.getText());
> - }
> -
> - return true;
> - }
> -
> - public Boolean isValidKey(String key){
> - // TODO : Check if the key match a USK key
> - return true;
> - }
> -
> - public void saveProperties() {
> - String path = pathField.getText();
> - String url = urlField.getText();
> - if(!url.endsWith("/")) //$NON-NLS-1$
> - url += "/";; //$NON-NLS-1$
> -
> - String arcUrl = url + "archives"; //$NON-NLS-1$
> - String mediaUrl = url + "media"; //$NON-NLS-1$
> -
> - weblog.setBlogUrls(path, url, arcUrl, mediaUrl);
> - weblog.setType(typeCombo.getSelectedItem().toString());
> - }
> - }
> -
> - private class TitleDescrPanel extends PropertyPanel {
> - /**
> - *
> + public void saveProperties()
> + {
> + String path = pathField.getText();
> + String url = urlField.getText();
> + if(!url.endsWith("/")) //$NON-NLS-1$
> + url += "/";; //$NON-NLS-1$
> + String arcUrl = url + "archives"; //$NON-NLS-1$
> + String mediaUrl = url + "media"; //$NON-NLS-1$
> +
> + weblog.setBlogUrls(path, url, arcUrl, mediaUrl);
> +
weblog.setType(typeCombo.getSelectedItem().toString());
> + }
> + }
> +
> + private class TitleDescrPanel extends PropertyPanel
> + {
> + /**
> + *
> */
> private static final long serialVersionUID = 1L;
> private JTextField titleField = new JTextField();
> - private JTextArea textArea = new JTextArea(4, 4);
> + private JTextArea textArea = new JTextArea(4, 4);
> +
> + public TitleDescrPanel()
> + {
> + setLayout(new BorderLayout());
> +
> + JPanel instrPanel = new JPanel(new BorderLayout());
> + JLabel header =
createHeaderLabel(i18n.str("title_and_description")); //$NON-NLS-1$
> + String text =
> + i18n.str("title_panel_text"); //$NON-NLS-1$
> + instrPanel.add(header, BorderLayout.NORTH);
> + instrPanel.add(new MultilineText(text),
> BorderLayout.CENTER);
> +
> + popupManager.registerJTextComponent(titleField);
> + popupManager.registerJTextComponent(textArea);
> +
> + LabelledItemPanel lip = new LabelledItemPanel();
> + lip.addItem(i18n.str("site_title"), titleField);
> //$NON-NLS-1$
> + lip.addItem(i18n.str("description"), new
JScrollPane(textArea)); //$NON-NLS-1$
> +
> + add(instrPanel, BorderLayout.NORTH);
> + add(lip, BorderLayout.CENTER);
>
> + }
> +
> + public boolean isValidData()
> + {
> + if(titleField.getText().equals("")) //$NON-NLS-1$
> + {
> +
> JOptionPane.showMessageDialog(TBWizardDialog.this,
> + i18n.str("invalid_title_prompt"),
> i18n.str("title"),
JOptionPane.WARNING_MESSAGE); //$NON-NLS-1$ //$NON-NLS-2$
> + return false;
> + }
> + return true;
> + }
> +
> + public void saveProperties()
> + {
> + weblog.setTitle(titleField.getText());
> + weblog.setDescription(textArea.getText());
> + }
>
> - public TitleDescrPanel() {
> - setLayout(new BorderLayout());
> -
> - JPanel instrPanel = new JPanel(new BorderLayout());
> - JLabel header =
createHeaderLabel(i18n.str("title_and_description")); //$NON-NLS-1$
> - String text =
> - i18n.str("title_panel_text"); //$NON-NLS-1$
> - instrPanel.add(header, BorderLayout.NORTH);
> - instrPanel.add(new MultilineText(text), BorderLayout.CENTER);
> -
> - popupManager.registerJTextComponent(titleField);
> - popupManager.registerJTextComponent(textArea);
> -
> - LabelledItemPanel lip = new LabelledItemPanel();
> - lip.addItem(i18n.str("site_title"), titleField); //$NON-NLS-1$
> - lip.addItem(i18n.str("description"), new
JScrollPane(textArea)); //$NON-NLS-1$
> -
> - add(instrPanel, BorderLayout.NORTH);
> - add(lip, BorderLayout.CENTER);
> - }
> -
> - public boolean isValidData() {
> - if(titleField.getText().equals("")) //$NON-NLS-1$
> - {
> - JOptionPane.showMessageDialog(TBWizardDialog.this,
> - i18n.str("invalid_title_prompt"),
i18n.str("title"), JOptionPane.WARNING_MESSAGE); //$NON-NLS-1$ //$NON-NLS-2$
> - return false;
> - }
> - return true;
> - }
> -
> - public void saveProperties() {
> - weblog.setTitle(titleField.getText());
> - weblog.setDescription(textArea.getText());
> - }
> -
> - public String getTitle() {
> + public String getTitle()
> + {
> return titleField.getText();
> }
>
> - public String getDescription() {
> + public String getDescription()
> + {
> return textArea.getText();
> }
> - }
> -
> - private class CategoriesPanel extends PropertyPanel {
> - /**
> - *
> + }
> +
> + private class CategoriesPanel extends PropertyPanel
> + {
> + /**
> + *
> */
> private static final long serialVersionUID = 1L;
> private EditableList list;
> - private WeblogEditableListModel model;
> -
> - public CategoriesPanel() {
> - setLayout(new BorderLayout(5, 5));
> + private WeblogEditableListModel model;
> +
> + public CategoriesPanel()
> + {
> + setLayout(new BorderLayout(5, 5));
> +
> + JPanel instrPanel = new JPanel(new BorderLayout());
> + JLabel header =
> createHeaderLabel(i18n.str("categories")); //$NON-NLS-1$
> + String text =
> + i18n.str("categories_panel_text"); //$NON-NLS-1$
> + instrPanel.add(header, BorderLayout.NORTH);
> + instrPanel.add(new MultilineText(text),
> BorderLayout.CENTER);
> +
> + model = new
> WeblogEditableListModel(WeblogEditableListModel.CATEGORIES);
> + list = new EditableList(model);
> + setBorder(BorderFactory.createEmptyBorder(12, 12, 12,
> 12));
> +
> + add(instrPanel, BorderLayout.NORTH);
> + add(list, BorderLayout.CENTER);
>
> - JPanel instrPanel = new JPanel(new BorderLayout());
> - JLabel header =
createHeaderLabel(i18n.str("categories")); //$NON-NLS-1$
> - String text =
> - i18n.str("categories_panel_text"); //$NON-NLS-1$
> - instrPanel.add(header, BorderLayout.NORTH);
> - instrPanel.add(new MultilineText(text), BorderLayout.CENTER);
>
> - model = new
WeblogEditableListModel(WeblogEditableListModel.CATEGORIES);
> - list = new EditableList(model);
> - setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12));
> -
> - add(instrPanel, BorderLayout.NORTH);
> - add(list, BorderLayout.CENTER);
> -
> -
> - }
> + }
> +
> + public boolean isValidData()
> + {
> + return true;
> + }
> +
> + public void saveProperties()
> + {
> + //ListModel lm = catList.getModel();
> + try
> + {
> + model.syncListWithWeblog(weblog);
> + }
> + catch(Exception ex)
> + {
> + ex.printStackTrace();
> + }
> + }
>
> - public boolean isValidData() {
> - return true;
> - }
> -
> - public void saveProperties() {
> - //ListModel lm = catList.getModel();
> - try {
> - model.syncListWithWeblog(weblog);
> - } catch(Exception ex) {
> - ex.printStackTrace();
> - }
> - }
> -
> - public String[] getCategories() {
> + public String[] getCategories()
> + {
> List data = list.getListData();
> String[] cats = new String[data.size()];
> for(int i = 0; i < cats.length; i++)
> @@ -478,50 +530,59 @@
> return cats;
> }
>
> - public WeblogEditableListModel getModel() {
> + public WeblogEditableListModel getModel()
> + {
> return model;
> }
> - }
> -
> - private class AuthorsPanel extends PropertyPanel {
> - /**
> - *
> + }
> +
> + private class AuthorsPanel extends PropertyPanel
> + {
> + /**
> + *
> */
> private static final long serialVersionUID = 1L;
> private EditableList list;
> - private WeblogEditableListModel model;
> + private WeblogEditableListModel model;
> +
> + public AuthorsPanel()
> + {
> + setLayout(new BorderLayout(5, 5));
> +
> + JPanel instrPanel = new JPanel(new BorderLayout());
> + JLabel header = createHeaderLabel(i18n.str("authors"));
> //$NON-NLS-1$
> + String text =
> + i18n.str("authors_panel_text"); //$NON-NLS-1$
> + instrPanel.add(header, BorderLayout.NORTH);
> + instrPanel.add(new MultilineText(text),
> BorderLayout.CENTER);
> +
> + model = new
> WeblogEditableListModel(WeblogEditableListModel.AUTHORS);
> + list = new EditableList(model);
> + setBorder(BorderFactory.createEmptyBorder(12, 12, 12,
> 12));
> +
> + add(instrPanel, BorderLayout.NORTH);
> + add(list, BorderLayout.CENTER);
>
> + }
> +
> + public boolean isValidData()
> + {
> + return true;
> + }
> +
> + public void saveProperties()
> + {
> + try
> + {
> + model.syncListWithWeblog(weblog);
> + }
> + catch(Exception ex)
> + {
> + ex.printStackTrace();
> + }
> + }
>
> - public AuthorsPanel() {
> - setLayout(new BorderLayout(5, 5));
> -
> - JPanel instrPanel = new JPanel(new BorderLayout());
> - JLabel header =
createHeaderLabel(i18n.str("authors")); //$NON-NLS-1$
> - String text =
> - i18n.str("authors_panel_text"); //$NON-NLS-1$
> - instrPanel.add(header, BorderLayout.NORTH);
> - instrPanel.add(new MultilineText(text), BorderLayout.CENTER);
> -
> - model = new
WeblogEditableListModel(WeblogEditableListModel.AUTHORS);
> - list = new EditableList(model);
> - setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12));
> -
> - add(instrPanel, BorderLayout.NORTH);
> - add(list, BorderLayout.CENTER);
> - }
> -
> - public boolean isValidData() {
> - return true;
> - }
> -
> - public void saveProperties() {
> - try {
> - model.syncListWithWeblog(weblog);
> - } catch(Exception ex) {
> - ex.printStackTrace();
> - }
> - }
> -
> - public Author[] getAuthors() {
> + public Author[] getAuthors()
> + {
> List data = list.getListData();
> Author[] a = new Author[data.size()];
> for(int i = 0; i < a.length; i++)
> @@ -529,27 +590,30 @@
> return a;
> }
>
> - public WeblogEditableListModel getModel() {
> + public WeblogEditableListModel getModel()
> + {
> return model;
> }
> - }
> + }
>
> - private class EmailPanel extends PropertyPanel {
> -
> + private class EmailPanel extends PropertyPanel
> + {
> +
> /**
> - *
> + *
> */
> private static final long serialVersionUID = 1L;
> TBEmailPanel emailPanel;
>
> - public EmailPanel() {
> + public EmailPanel()
> + {
> setLayout(new BorderLayout(5, 5));
>
> JPanel instrPanel = new JPanel(new BorderLayout());
> JLabel header = createHeaderLabel("Email"); //$NON-NLS-1$
> String text =
> - i18n.str("specify_mail_server_prompt"); //$NON-NLS-1$
> -
> + i18n.str("specify_mail_server_prompt"); //$NON-NLS-1$
> +
> instrPanel.add(header, BorderLayout.NORTH);
> instrPanel.add(new MultilineText(text), BorderLayout.CENTER);
>
> @@ -561,106 +625,120 @@
> /* (non-Javadoc)
> * @see
net.sf.thingamablog.gui.properties.PropertyPanel#isValidData()
> */
> - public boolean isValidData() {
> + public boolean isValidData()
> + {
> return emailPanel.isValidData();
> }
> -
> +
> /* (non-Javadoc)
> * @see
net.sf.thingamablog.gui.properties.PropertyPanel#saveProperties()
> */
> - public void saveProperties() {
> - emailPanel.saveProperties();
> + public void saveProperties()
> + {
> + emailPanel.saveProperties();
> }
>
> }
> -
> - private class TransportPanel extends PropertyPanel {
> - /**
> - *
> +
> + private class TransportPanel extends PropertyPanel
> + {
> + /**
> + *
> */
> private static final long serialVersionUID = 1L;
> TBPublishTransportPanel pubPanel;
> -
> - public TransportPanel() {
> - setLayout(new BorderLayout());
> -
> - JPanel instrPanel = new JPanel(new BorderLayout());
> - JLabel header =
createHeaderLabel(i18n.str("publishing")); //$NON-NLS-1$
> - String text =
> - i18n.str("publishing_panel_text"); //$NON-NLS-1$
> - instrPanel.add(header, BorderLayout.NORTH);
> - instrPanel.add(new MultilineText(text), BorderLayout.CENTER);
> -
> - pubPanel = new TBPublishTransportPanel(weblog);
> - add(instrPanel, BorderLayout.NORTH);
> - add(pubPanel, BorderLayout.CENTER);
> - }
> -
> - public boolean isValidData() {
> - return pubPanel.isValidData();
> - }
> -
> - public void saveProperties() {
> - pubPanel.saveProperties();
> - }
> - }
> -
> - private class TemplatePanel extends PropertyPanel {
> - /**
> - *
> +
> + public TransportPanel()
> + {
> + setLayout(new BorderLayout());
> +
> + JPanel instrPanel = new JPanel(new BorderLayout());
> + JLabel header =
> createHeaderLabel(i18n.str("publishing")); //$NON-NLS-1$
> + String text =
> + i18n.str("publishing_panel_text"); //$NON-NLS-1$
> + instrPanel.add(header, BorderLayout.NORTH);
> + instrPanel.add(new MultilineText(text),
> BorderLayout.CENTER);
> +
> + pubPanel = new TBPublishTransportPanel(weblog);
> + add(instrPanel, BorderLayout.NORTH);
> + add(pubPanel, BorderLayout.CENTER);
>
> + }
> +
> + public boolean isValidData()
> + {
> + return pubPanel.isValidData();
> + }
> +
> + public void saveProperties()
> + {
> + pubPanel.saveProperties();
> + }
> + }
> +
> + private class TemplatePanel extends PropertyPanel
> + {
> + /**
> + *
> */
> private static final long serialVersionUID = 1L;
> - //private JComboBox tmplCombo;
> + //private JComboBox tmplCombo;
> //private TemplatePropertiesPanel propertyPanel;
> private TemplateSelectionPanel selPanel;
> -
> - public TemplatePanel() {
> - JPanel instrPanel = new JPanel(new BorderLayout());
> - JLabel header =
createHeaderLabel(i18n.str("templates")); //$NON-NLS-1$
> - String text =
> - i18n.str("templates_panel_text"); //$NON-NLS-1$
> - instrPanel.add(header, BorderLayout.NORTH);
> - instrPanel.add(new MultilineText(text), BorderLayout.CENTER);
> -
> - selPanel = new TemplateSelectionPanel(weblog);
> -
> +
> + public TemplatePanel()
> + {
> + JPanel instrPanel = new JPanel(new BorderLayout());
> + JLabel header =
> createHeaderLabel(i18n.str("templates")); //$NON-NLS-1$
> + String text =
> + i18n.str("templates_panel_text"); //$NON-NLS-1$
> + instrPanel.add(header, BorderLayout.NORTH);
> + instrPanel.add(new MultilineText(text),
> BorderLayout.CENTER);
> +
> + selPanel = new TemplateSelectionPanel(weblog);
> +
> setLayout(new BorderLayout(5, 5));
> - add(instrPanel, BorderLayout.NORTH);
> - add(selPanel, BorderLayout.CENTER);
> - }
> -
> - public boolean isValidData() {
> - if(selPanel.getSelectedPack() == null)
> + add(instrPanel, BorderLayout.NORTH);
> + add(selPanel, BorderLayout.CENTER);
>
> + }
> +
> + public boolean isValidData()
> + {
> + if(selPanel.getSelectedPack() == null)
> return false;
> return true;
> - }
> -
> - public void saveProperties() {
> + }
> +
> + public void saveProperties()
> + {
> selectedPack = selPanel.getSelectedPack();
> }
> - }
> -
> - private class DonePanel extends PropertyPanel {
> - /**
> - *
> + }
> +
> + private class DonePanel extends PropertyPanel
> + {
> + /**
> + *
> */
> private static final long serialVersionUID = 1L;
> -
> - public DonePanel() {
> - JLabel header =
createHeaderLabel(i18n.str("done")); //$NON-NLS-1$
> - String text =
> - i18n.str("finished_panel_text"); //$NON-NLS-1$
> -
> - setLayout(new BorderLayout());
> - add(header, BorderLayout.NORTH);
> - add(new MultilineText(text), BorderLayout.CENTER);
> - }
> -
> - public boolean isValidData() {
> - return true;
> - }
> -
> - public void saveProperties() {
> - }
> - }
> +
> + public DonePanel()
> + {
> + JLabel header = createHeaderLabel(i18n.str("done"));
> //$NON-NLS-1$
> + String text =
> + i18n.str("finished_panel_text"); //$NON-NLS-1$
> +
> + setLayout(new BorderLayout());
> + add(header, BorderLayout.NORTH);
> + add(new MultilineText(text), BorderLayout.CENTER);
> + }
> +
> + public boolean isValidData()
> + {
> + return true;
> + }
> +
> + public void saveProperties()
> + {
> + }
> + }
> }
>
> Modified:
trunk/apps/thingamablog/src/net/sf/thingamablog/xml/TBPersistFactory.java
> ===================================================================
> ---
trunk/apps/thingamablog/src/net/sf/thingamablog/xml/TBPersistFactory.java
2008-02-09 20:27:58 UTC (rev 17769)
> +++
trunk/apps/thingamablog/src/net/sf/thingamablog/xml/TBPersistFactory.java
2008-02-10 03:51:06 UTC (rev 17770)
> @@ -14,7 +14,7 @@
> * but WITHOUT ANY WARRANTY; without even the implied warranty of
> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> * GNU General Public License for more details.
> - *
> + *
> * You should have received a copy of the GNU General Public License
> * along with this program; if not, write to the Free Software
> * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
> @@ -62,328 +62,362 @@
>
>
> /**
> - *
> + *
> * Factory for persisting a Thingamablog XML "database"
> - *
> + *
> * @author Bob Tantlinger
> *
> */
> -public class TBPersistFactory {
> +public class TBPersistFactory
> +{
> //private static final Logger logger =
Logger.getLogger("net.sf.thingamablog.xml");
>
> /**
> - * Saves the current data to an XML file
> - *
> - * @param blogList The list of weblogs
> - * @param feedRootFolder The root FeedFolder
> - * @param path The path to save the file to
> - * @throws IOException If an IO error occurs
> - * @throws JDOMException If a JDOM error occurs
> - */
> - public synchronized static void save(WeblogList blogList, FeedFolder
feedRootFolder, String path)
> - throws IOException, JDOMException {
> - String mainRoot = "Thingamablog";
> - //Document document = XMLUtils.initDocument(mainRoot, mainRoot, new
File(path));
> - Document document = new Document(new Element(mainRoot));
> - Comment comment =
> - new Comment("Generated by Thingamablog. DO NOT EDIT THIS
FILE!!!");
> - document.getContent().add(0, comment);
> -
> - Element weblogsRoot = new Element("Weblogs");
> - Element feedsRoot = new Element("Feeds");
> - saveWeblogsToXML(blogList, weblogsRoot);
> - saveFeedFolder(feedRootFolder, feedsRoot);
> -
> - Element root = document.getRootElement();
> - root.addContent(weblogsRoot);
> - root.addContent(feedsRoot);
> -
> - XMLUtils.writeXML(document, path, true);
> - }
> -
> - public static void loadData(String path, WeblogList list, FeedFolder
rootFolder, WeblogBackend b1, FeedBackend b2)
> - throws IOException, JDOMException {
> - File f = new File(path);
> - Document doc = createDocument(f);
> - loadWeblogList(doc, f, list, b1);
> - loadFeedTree(doc, rootFolder, b2);
> - }
> -
> - private static Document createDocument(File file)
> - throws IOException, JDOMException {
> - SAXBuilder builder = new SAXBuilder(false);
> - builder.setEntityResolver(new TBEntityResolver());
> - Document document = builder.build(file);
> - return document;
> - }
> -
> -
> -
> - private static void saveFeedFolder(FeedFolder folder, Element element)
{
> - FeedFolder sub[] = folder.getFolders();
> - for(int i = 0; i < sub.length; i++) {
> - Element category = new Element("Folder");
> - category.setAttribute("name", sub[i].getName());
> - element.addContent(category);
> - saveFeedFolder(sub[i], category);
> - }
> -
> - Feed feeds[] = folder.getFeeds();
> - for(int j = 0; j < feeds.length; j++) {
> - Element link = new Element("Feed");
> - link.setText(feeds[j].getURL());
> -
> - String title = feeds[j].getTitle();
> - if(title != null)
> - link.setAttribute("title", title);
> - else
> - link.setAttribute("title", "Untitled");
> -
> - link.setAttribute("archive", feeds[j].isLimitItems() + "");
> - link.setAttribute("limit", feeds[j].getItemLimit() + "");
> -
> - Date updateDate = feeds[j].getLastUpdated();
> - if(updateDate != null)
> - link.setAttribute("update_date", updateDate.getTime()
+ "");
> - //link.setAttribute("update_failed",
feeds[j].isLastUpdateFailed() + "");
> - if(feeds[j].isLastUpdateFailed())
> - link.setAttribute("update_failed",
feeds[j].getLastUpdateFailedReason());
> -
> - element.addContent(link);
> - }
> - }
> -
> - /**
> - * Loads the FeedFolder heirarchy from an XML file
> - *
> - * @param rootFolder The root FeedFolder
> - * @param path The path to the XML file
> - * @param backend The backend for the feeds
> - * @throws IOException If an IO error occurs
> - * @throws JDOMException If a JDOM error occurs
> - */
> - public static void loadFeedTree(FeedFolder rootFolder, String path,
FeedBackend backend)
> - throws IOException, JDOMException {
> - Document document = createDocument(new File(path));
> - if(document == null)
> - return;
> -
> - loadFeedTree(document, rootFolder, backend);
> - }
> -
> - private static void loadFeedTree(Document document, FeedFolder
rootFolder, FeedBackend backend) {
> - Element root = document.getRootElement();
> - Element feedRoot = root.getChild("Feeds");
> -
> - if(feedRoot != null) {
> - loadFeeds(rootFolder, feedRoot, backend);
> - }
> - }
> -
> - private static void loadFeeds(FeedFolder folder, Element element,
FeedBackend backend) {
> - List contents = element.getChildren();
> - Iterator contentsIt = contents.iterator();
> -
> - while(contentsIt.hasNext()) {
> - Element ele = (Element) contentsIt.next();
> -
> - /** The element is a category */
> - if(ele.getName().equals("Folder")) {
> - FeedFolder subFolder = loadFeedFolder(ele);
> - folder.addFolder(subFolder);
> - loadFeeds(subFolder, ele, backend);
> - }
> - /** The element is a favorite */
> - else if (ele.getName().equals("Feed")) {
> - folder.addFeed(loadFeed(ele, backend));
> - }
> - }
> - }
> -
> - private static FeedFolder loadFeedFolder(Element element) {
> -
> - /** Name of the category */
> - String folderName = element.getAttributeValue("name");
> -
> - /** Create a new category */
> - FeedFolder sub = new FeedFolder(folderName);
> - return sub;
> - }
> -
> - private static Feed loadFeed(Element element, FeedBackend backend) {
> - String url = "";
> - String title = "";
> - Date updated = null;
> - boolean /*lastUpdateFailed = false,*/ archive = true;
> - String failReason = null;
> - int limit = 50;
> -
> - // Url of the feed
> - if (element.getText() != null)
> - url = element.getText();
> -
> - // Title of the feed
> - if (element.getAttributeValue("title") != null)
> - title = element.getAttributeValue("title");
> -
> - if(element.getAttributeValue("update_date") != null) {
> - try {
> - long epoch =
Long.parseLong(element.getAttributeValue("update_date"));
> - updated = new Date(epoch);
> - } catch(Exception ex){}
> - }
> -
> - try {
> - limit =
Integer.parseInt(element.getAttributeValue("limit", "50"));
> - }catch(Exception ex){}
> -
> - archive =
element.getAttributeValue("archive", "true").equals("true");
> -
> - if(element.getAttributeValue("update_failed") != null) {
> - failReason = element.getAttributeValue("update_failed");
> - }
> -
> - Feed f = new Feed(url);
> - f.setTitle(title);
> - f.setBackend(backend);
> - f.setLastUpdated(updated);
> - f.setLastUpdateFailed(failReason != null);
> - f.setLimitItems(archive);
> - f.setItemLimit(limit);
> - if(failReason != null)
> - f.setLastUpdateFailedReason(failReason);
> - return f;
> - }
> -
> -
> - private static void saveWeblogsToXML(WeblogList blogList, Element root)
> - throws IOException, JDOMException {
> - for(int i = 0; i < blogList.getWeblogCount(); i++) {
> - Weblog blog = blogList.getWeblogAt(i);
> - Element bElement = createWeblogElement(blog);
> - root.addContent(bElement);
> - }
> - }
> -
> - private static Element createWeblogElement(Weblog blog) {
> - Element element = new Element("Weblog");
> - element.setAttribute("title", blog.getTitle());
> - element.setAttribute("key", blog.getKey());
> - element.setAttribute("last_publish",
blog.getLastPublishDate().getTime() + "");
> + * Saves the current data to an XML file
> + *
> + * @param blogList The list of weblogs
> + * @param feedRootFolder The root FeedFolder
> + * @param path The path to save the file to
> + * @throws IOException If an IO error occurs
> + * @throws JDOMException If a JDOM error occurs
> + */
> + public synchronized static void save(WeblogList blogList, FeedFolder
feedRootFolder, String path)
> + throws IOException, JDOMException
> + {
> + String mainRoot = "Thingamablog";
> + //Document document = XMLUtils.initDocument(mainRoot, mainRoot,
> new
File(path));
> + Document document = new Document(new Element(mainRoot));
> + Comment comment =
> + new Comment("Generated by Thingamablog. DO NOT EDIT
> THIS FILE!!!");
> + document.getContent().add(0, comment);
> +
> + Element weblogsRoot = new Element("Weblogs");
> + Element feedsRoot = new Element("Feeds");
> + saveWeblogsToXML(blogList, weblogsRoot);
> + saveFeedFolder(feedRootFolder, feedsRoot);
> +
> + Element root = document.getRootElement();
> + root.addContent(weblogsRoot);
> + root.addContent(feedsRoot);
> +
> + XMLUtils.writeXML(document, path, true);
> + }
> +
> + public static void loadData(String path, WeblogList list, FeedFolder
rootFolder, WeblogBackend b1, FeedBackend b2)
> + throws IOException, JDOMException
> + {
> + File f = new File(path);
> + Document doc = createDocument(f);
> + loadWeblogList(doc, f, list, b1);
> + loadFeedTree(doc, rootFolder, b2);
> + }
> +
> + private static Document createDocument(File file)
> + throws IOException, JDOMException
> + {
> + SAXBuilder builder = new SAXBuilder(false);
> + builder.setEntityResolver(new TBEntityResolver());
> + Document document = builder.build(file);
> + return document;
> + }
> +
> +
> +
> + private static void saveFeedFolder(FeedFolder folder, Element element)
> + {
> + FeedFolder sub[] = folder.getFolders();
> + for(int i = 0; i < sub.length; i++)
> + {
> + Element category = new Element("Folder");
> + category.setAttribute("name", sub[i].getName());
> + element.addContent(category);
> + saveFeedFolder(sub[i], category);
> + }
> +
> + Feed feeds[] = folder.getFeeds();
> + for(int j = 0; j < feeds.length; j++)
> + {
> + Element link = new Element("Feed");
> + link.setText(feeds[j].getURL());
> +
> + String title = feeds[j].getTitle();
> + if(title != null)
> + link.setAttribute("title", title);
> + else
> + link.setAttribute("title", "Untitled");
> +
> + link.setAttribute("archive", feeds[j].isLimitItems() +
> "");
> + link.setAttribute("limit", feeds[j].getItemLimit() +
> "");
> +
> + Date updateDate = feeds[j].getLastUpdated();
> + if(updateDate != null)
> + link.setAttribute("update_date",
> updateDate.getTime() + "");
> + //link.setAttribute("update_failed",
> feeds[j].isLastUpdateFailed()
+ "");
> + if(feeds[j].isLastUpdateFailed())
> + link.setAttribute("update_failed",
feeds[j].getLastUpdateFailedReason());
> +
> + element.addContent(link);
> + }
> + }
> +
> + /**
> + * Loads the FeedFolder heirarchy from an XML file
> + *
> + * @param rootFolder The root FeedFolder
> + * @param path The path to the XML file
> + * @param backend The backend for the feeds
> + * @throws IOException If an IO error occurs
> + * @throws JDOMException If a JDOM error occurs
> + */
> + public static void loadFeedTree(FeedFolder rootFolder, String path,
FeedBackend backend)
> + throws IOException, JDOMException
> + {
> + Document document = createDocument(new File(path));
> + if(document == null)
> + return;
> +
> + loadFeedTree(document, rootFolder, backend);
> + }
> +
> + private static void loadFeedTree(Document document, FeedFolder
> rootFolder,
FeedBackend backend)
> + {
> + Element root = document.getRootElement();
> + Element feedRoot = root.getChild("Feeds");
> +
> + if(feedRoot != null)
> + {
> + loadFeeds(rootFolder, feedRoot, backend);
>
> + }
> + }
> +
> + private static void loadFeeds(FeedFolder folder, Element element,
FeedBackend backend)
> + {
> + List contents = element.getChildren();
> + Iterator contentsIt = contents.iterator();
> +
> + while(contentsIt.hasNext())
> + {
> + Element ele = (Element) contentsIt.next();
> +
> + /** The element is a category */
> + if(ele.getName().equals("Folder"))
> + {
> + FeedFolder subFolder = loadFeedFolder(ele);
> + folder.addFolder(subFolder);
> + loadFeeds(subFolder, ele, backend);
> + }
> + /** The element is a favorite */
> + else if (ele.getName().equals("Feed"))
> + {
> + folder.addFeed(loadFeed(ele, backend));
> + }
> + }
> + }
> +
> + private static FeedFolder loadFeedFolder(Element element)
> + {
> +
> + /** Name of the category */
> + String folderName = element.getAttributeValue("name");
> +
> + /** Create a new category */
> + FeedFolder sub = new FeedFolder(folderName);
> + return sub;
> + }
> +
> + private static Feed loadFeed(Element element, FeedBackend backend)
> + {
> + String url = "";
> + String title = "";
> + Date updated = null;
> + boolean /*lastUpdateFailed = false,*/ archive = true;
> + String failReason = null;
> + int limit = 50;
> +
> + // Url of the feed
> + if (element.getText() != null)
> + url = element.getText();
> +
> + // Title of the feed
> + if (element.getAttributeValue("title") != null)
> + title = element.getAttributeValue("title");
> +
> + if(element.getAttributeValue("update_date") != null)
> + {
> + try
> + {
> + long epoch =
> Long.parseLong(element.getAttributeValue("update_date"));
> + updated = new Date(epoch);
>
> + }
> + catch(Exception ex){}
> + }
> +
> + try
> + {
> + limit =
> Integer.parseInt(element.getAttributeValue("limit", "50"));
> + }catch(Exception ex){}
> +
> + archive = element.getAttributeValue("archive",
> "true").equals("true");
> +
> + if(element.getAttributeValue("update_failed") != null)
> + {
> + failReason = element.getAttributeValue("update_failed");
> + }
> +
> + Feed f = new Feed(url);
> + f.setTitle(title);
> + f.setBackend(backend);
> + f.setLastUpdated(updated);
> + f.setLastUpdateFailed(failReason != null);
> + f.setLimitItems(archive);
> + f.setItemLimit(limit);
> + if(failReason != null)
> + f.setLastUpdateFailedReason(failReason);
> + return f;
> + }
> +
> +
> + private static void saveWeblogsToXML(WeblogList blogList, Element root)
> + throws IOException, JDOMException
> + {
> + for(int i = 0; i < blogList.getWeblogCount(); i++)
> + {
> + Weblog blog = blogList.getWeblogAt(i);
> + Element bElement = createWeblogElement(blog);
> + root.addContent(bElement);
> + }
> + }
> +
> + private static Element createWeblogElement(Weblog blog)
> + {
> + Element element = new Element("Weblog");
> + element.setAttribute("title", blog.getTitle());
> + element.setAttribute("key", blog.getKey());
> + element.setAttribute("last_publish",
> blog.getLastPublishDate().getTime()
+ "");
> element.setAttribute("publish_failed", blog.isPublishFailed()
+ "");
> - Element descr = new Element("Description");
> - descr.addContent(blog.getDescription());
> - element.addContent(descr);
> - element.addContent(createPingServicesElement(blog));
> - element.addContent(createPublishTransportElement(blog));
> + Element descr = new Element("Description");
> + descr.addContent(blog.getDescription());
> + element.addContent(descr);
> + element.addContent(createPingServicesElement(blog));
> + element.addContent(createPublishTransportElement(blog));
> element.addContent(createMailSettingsElement(blog));
> -
> - if(blog instanceof TBWeblog) {
> - TBWeblog tbBlog = (TBWeblog)blog;
> - return createTBWeblogElement(tbBlog, element);
> - }
> - return element;
> - }
> -
> - private static Element createPingServicesElement(Weblog blog) {
> - Element element = new Element("PingServices");
> - PingService ps[] = blog.getPingServices();
> - for(int i = 0; i < ps.length; i++) {
> - if(ps[i] instanceof WeblogsDotComPing) {
> - Element ping = new Element("WeblogsDotComPing");
> - ping.setAttribute("name", ps[i].getServiceName());
> - ping.setAttribute("url", ps[i].getServiceUrl());
> - ping.setAttribute("enabled", ps[i].isEnabled() + "");
> - element.addContent(ping);
> - }
> - }
> - return element;
> - }
> -
> - private static Element createTBWeblogElement(TBWeblog blog, Element
element) {
> - element.setName("TBWeblog");
> - element.setAttribute("url", blog.getBaseUrl());
> - element.setAttribute("arc_url", blog.getArchiveUrl());
> - element.setAttribute("media_url", blog.getMediaUrl());
> - element.setAttribute("base_path", blog.getBasePath());
> - element.setAttribute("base_date",
blog.getArchiveBaseDate().getTime() + "");
> - element.setAttribute("arc_policy", blog.getArchivePolicy() + "");
> - element.setAttribute("day_interval", blog.getArchiveByDayInterval()
+ "");
> - element.setAttribute("arc_ext", blog.getArchivesExtension());
> - element.setAttribute("cat_ext", blog.getCategoriesExtension());
> +
> + if(blog instanceof TBWeblog)
> + {
> + TBWeblog tbBlog = (TBWeblog)blog;
> + return createTBWeblogElement(tbBlog, element);
> + }
> + return element;
> + }
> +
> + private static Element createPingServicesElement(Weblog blog)
> + {
> + Element element = new Element("PingServices");
> + PingService ps[] = blog.getPingServices();
> + for(int i = 0; i < ps.length; i++)
> + {
> + if(ps[i] instanceof WeblogsDotComPing)
> + {
> + Element ping = new Element("WeblogsDotComPing");
> + ping.setAttribute("name",
> ps[i].getServiceName());
> + ping.setAttribute("url", ps[i].getServiceUrl());
> + ping.setAttribute("enabled", ps[i].isEnabled()
> + "");
> + element.addContent(ping);
> + }
> + }
> + return element;
> + }
> +
> + private static Element createTBWeblogElement(TBWeblog blog, Element
element)
> + {
> + element.setName("TBWeblog");
> + element.setAttribute("url", blog.getBaseUrl());
> + element.setAttribute("arc_url", blog.getArchiveUrl());
> + element.setAttribute("media_url", blog.getMediaUrl());
> + element.setAttribute("base_path", blog.getBasePath());
> + element.setAttribute("base_date",
> blog.getArchiveBaseDate().getTime()
+ "");
> + element.setAttribute("arc_policy", blog.getArchivePolicy() +
> "");
> + element.setAttribute("day_interval",
> blog.getArchiveByDayInterval()
+ "");
> + element.setAttribute("arc_ext", blog.getArchivesExtension());
> + element.setAttribute("cat_ext", blog.getCategoriesExtension());
> element.setAttribute("gen_cat_feed", blog.isGenerateCategoryFeeds()
+ "");
> element.setAttribute("cat_feed_ext",
blog.getCategoriesFeedExtension());
> - element.setAttribute("entry_ext", blog.getEntryPageExtension());
> - element.setAttribute("gen_rss", blog.isGenerateRssFeed() + "");
> - element.setAttribute("gen_arc_index", blog.isGenerateArchiveIndex()
+ "");
> - element.setAttribute("gen_entries", blog.isGenerateEntryPages()
+ "");
> - element.setAttribute("fp_filename", blog.getFrontPageFileName());
> - element.setAttribute("rss_filename", blog.getRssFileName());
> - element.setAttribute("arc_index_filename",
blog.getArchiveIndexFileName());
> - element.setAttribute("locale", blog.getLocale().toString());
> - element.setAttribute("publish_all", blog.isPublishAll() + "");
> - element.setAttribute("type", blog.getType());
> -
> - Element outdatedArcs = new Element("OutdatedArchives");
> - ArchiveRange ar[] = blog.getOutdatedArchives();
> - for(int i = 0; i < ar.length; i++) {
> - Element arcRange = new Element("Archive");
> - arcRange.setAttribute("start", ar[i].getStartDate().getTime()
+ "");
> - arcRange.setAttribute("end",
ar[i].getExpirationDate().getTime() + "");
> - outdatedArcs.addContent(arcRange);
> - }
> - element.addContent(outdatedArcs);
> -
> - Element outdatedCats = new Element("OutdatedCategories");
> - String cats[] = blog.getOutdatedCategories();
> - for(int i = 0; i < cats.length; i++) {
> - Element category = new Element("Category");
> - category.setText(cats[i]);
> - outdatedCats.addContent(category);
> - }
> - element.addContent(outdatedCats);
> -
> - Element outdatedEntries = new Element("OutdatedEntries");
> - long ids[] = blog.getOutdatedEntryIDs();
> - for(int i = 0; i < ids.length; i++) {
> - Element ent = new Element("Entry");
> - ent.setText(ids[i] + "");
> - outdatedEntries.addContent(ent);
> - }
> - element.addContent(outdatedEntries);
> -
> - Element genElement = new Element("Generator");
> - PageGenerator gen = blog.getPageGenerator();
> - genElement.setAttribute("charset", gen.getCharset());
> - genElement.setAttribute("range_format",
gen.getArchiveRangeFormat());
> - genElement.setAttribute("span_range", gen.isSpanArcRange() + "");
> - genElement.setAttribute("date_format", gen.getDateFormat());
> - genElement.setAttribute("time_format", gen.getTimeFormat());
> - genElement.setAttribute("front_asc", gen.isFrontPageAscending()
+ "");
> - genElement.setAttribute("cat_asc", gen.isCategoryPageAscending()
+ "");
> - genElement.setAttribute("arc_asc", gen.isArchivePageAscending()
+ "");
> - genElement.setAttribute("limit_front", gen.isLimitFrontPage()
+ "");
> - genElement.setAttribute("front_page_limit", gen.getFrontPageLimit()
+ "");
> - genElement.setAttribute("limit_cat", gen.isLimitCategoryPage()
+ "");
> - genElement.setAttribute("cat_page_limit",
gen.getCategoryPageLimit() + "");
> - genElement.setAttribute("limit_rss_body", gen.isLimitRssEntry()
+ "");
> -
> -
> - Element customTagsElement = new Element("CustomTags");
> - CustomTag tags[] = gen.getCustomTags();
> - for(int i = 0; i < tags.length; i++) {
> - Element tag = new Element("Tag");
> - tag.setAttribute("name", tags[i].getName());
> - tag.setText(tags[i].getValue());
> - customTagsElement.addContent(tag);
> - }
> -
> - genElement.addContent(customTagsElement);
> - element.addContent(genElement);
> - return element;
> - }
> + element.setAttribute("entry_ext", blog.getEntryPageExtension());
> + element.setAttribute("gen_rss", blog.isGenerateRssFeed() + "");
> + element.setAttribute("gen_arc_index",
> blog.isGenerateArchiveIndex()
+ "");
> + element.setAttribute("gen_entries", blog.isGenerateEntryPages()
> + "");
> + element.setAttribute("fp_filename",
> blog.getFrontPageFileName());
> + element.setAttribute("rss_filename", blog.getRssFileName());
> + element.setAttribute("arc_index_filename",
blog.getArchiveIndexFileName());
> + element.setAttribute("locale", blog.getLocale().toString());
> + element.setAttribute("publish_all", blog.isPublishAll() + "");
> + element.setAttribute("type", blog.getType());
> +
> + Element outdatedArcs = new Element("OutdatedArchives");
> + ArchiveRange ar[] = blog.getOutdatedArchives();
> + for(int i = 0; i < ar.length; i++)
> + {
> + Element arcRange = new Element("Archive");
> + arcRange.setAttribute("start",
> ar[i].getStartDate().getTime() + "");
> + arcRange.setAttribute("end",
> ar[i].getExpirationDate().getTime() + "");
> + outdatedArcs.addContent(arcRange);
> + }
> + element.addContent(outdatedArcs);
> +
> + Element outdatedCats = new Element("OutdatedCategories");
> + String cats[] = blog.getOutdatedCategories();
> + for(int i = 0; i < cats.length; i++)
> + {
> + Element category = new Element("Category");
> + category.setText(cats[i]);
> + outdatedCats.addContent(category);
> + }
> + element.addContent(outdatedCats);
> +
> + Element outdatedEntries = new Element("OutdatedEntries");
> + long ids[] = blog.getOutdatedEntryIDs();
> + for(int i = 0; i < ids.length; i++)
> + {
> + Element ent = new Element("Entry");
> + ent.setText(ids[i] + "");
> + outdatedEntries.addContent(ent);
> + }
> + element.addContent(outdatedEntries);
> +
> + Element genElement = new Element("Generator");
> + PageGenerator gen = blog.getPageGenerator();
> + genElement.setAttribute("charset", gen.getCharset());
> + genElement.setAttribute("range_format",
> gen.getArchiveRangeFormat());
> + genElement.setAttribute("span_range", gen.isSpanArcRange() +
> "");
> + genElement.setAttribute("date_format", gen.getDateFormat());
> + genElement.setAttribute("time_format", gen.getTimeFormat());
> + genElement.setAttribute("front_asc", gen.isFrontPageAscending()
> + "");
> + genElement.setAttribute("cat_asc",
> gen.isCategoryPageAscending() + "");
> + genElement.setAttribute("arc_asc", gen.isArchivePageAscending()
> + "");
> + genElement.setAttribute("limit_front", gen.isLimitFrontPage() +
> "");
> + genElement.setAttribute("front_page_limit",
> gen.getFrontPageLimit()
+ "");
> + genElement.setAttribute("limit_cat", gen.isLimitCategoryPage()
> + "");
> + genElement.setAttribute("cat_page_limit",
> gen.getCategoryPageLimit()
+ "");
> + genElement.setAttribute("limit_rss_body", gen.isLimitRssEntry()
> + "");
> +
> +
> + Element customTagsElement = new Element("CustomTags");
> + CustomTag tags[] = gen.getCustomTags();
> + for(int i = 0; i < tags.length; i++)
> + {
> + Element tag = new Element("Tag");
> + tag.setAttribute("name", tags[i].getName());
> + tag.setText(tags[i].getValue());
> + customTagsElement.addContent(tag);
> + }
> +
> + genElement.addContent(customTagsElement);
> + element.addContent(genElement);
> + return element;
> + }
>
> - private static Element createMailSettingsElement(Weblog blog) {
> + private static Element createMailSettingsElement(Weblog blog)
> + {
> Element mailSettings = new Element("MailSettings");
> mailSettings.setAttribute("enabled",
blog.isImportFromEmailEnabled() + "");
> if(blog.getLastEmailCheck() != null)
> @@ -399,32 +433,36 @@
> transport.setAttribute("port", rpt.getPort() + "");
> transport.setAttribute("user", rpt.getUserName());
> if(rpt.isSavePassword())
> - transport.setAttribute("password",
> - PasswordUtil.encrypt(rpt.getPassword(),
PasswordUtil.KEY));
> + transport.setAttribute("password",
> + PasswordUtil.encrypt(rpt.getPassword(), PasswordUtil.KEY));
>
> mailSettings.addContent(transport);
> return mailSettings;
> }
> -
> - private static Element createPublishTransportElement(Weblog blog) {
> - Element transport = new Element("Transport");
> - PublishTransport pt = blog.getPublishTransport();
> - if(pt instanceof RemoteTransport) {
> - RemoteTransport rpt = (RemoteTransport)pt;
> - transport.setAttribute("type", "sftp");
> - transport.setAttribute("server", rpt.getAddress());
> - transport.setAttribute("port", rpt.getPort() + "");
> - transport.setAttribute("user", rpt.getUserName());
> - if(rpt.isSavePassword())
> - transport.setAttribute("password",
> - PasswordUtil.encrypt(rpt.getPassword(),
PasswordUtil.KEY));
> - if(rpt instanceof FTPTransport) {
> - FTPTransport ftp = (FTPTransport)rpt;
> - transport.setAttribute("type", "ftp");
> - transport.setAttribute("passive", ftp.isPassiveMode()+"");
> +
> + private static Element createPublishTransportElement(Weblog blog)
> + {
> + Element transport = new Element("Transport");
> + PublishTransport pt = blog.getPublishTransport();
> + if(pt instanceof RemoteTransport)
> + {
> + RemoteTransport rpt = (RemoteTransport)pt;
> + transport.setAttribute("type", "sftp");
> + transport.setAttribute("server", rpt.getAddress());
> + transport.setAttribute("port", rpt.getPort() + "");
> + transport.setAttribute("user", rpt.getUserName());
> + if(rpt.isSavePassword())
> + transport.setAttribute("password",
> + PasswordUtil.encrypt(rpt.getPassword(),
> PasswordUtil.KEY));
> + if(rpt instanceof FTPTransport)
> + {
> + FTPTransport ftp = (FTPTransport)rpt;
> + transport.setAttribute("type", "ftp");
> + transport.setAttribute("passive",
> ftp.isPassiveMode()+"");
> Element e = new Element("ASCIITypes");
> List exts = ftp.getASCIIExtensions();
> - for(Iterator it = exts.iterator(); it.hasNext();) {
> + for(Iterator it = exts.iterator(); it.hasNext();)
> + {
> String ex = it.next().toString();
> Element c = new Element("ext");
> c.setText(ex);
> @@ -432,252 +470,284 @@
> }
>
> transport.addContent(e);
> - }
> - } else {
> - transport.setAttribute("type", "local");
> - }
> -
> - return transport;
> - }
> -
> -
> - /**
> - * Creates a WeblogList from an XML file
> - *
> - * @param path The path to the XML file
> - * @param backend The backend to connect the weblogs to
> - * @param authStore The author store for the weblogs
> - * @param catStore The category store for the weblogs
> - * @return A list of weblogs
> - * @throws IOException If an IO error occurs
> - * @throws JDOMException If a JDOM error occurs
> - */
> - public static WeblogList loadWeblogsFromXML(String path, WeblogBackend
backend)
> - throws IOException, JDOMException {
> - WeblogList list = new WeblogList();
> - File f = new File(path);
> - Document document = createDocument(f);
> - loadWeblogList(document, f, list, backend);
> -
> - return list;
> - }
> -
> - private static void loadWeblogList(Document document, File path,
WeblogList list, WeblogBackend backend) {
> - if(document == null)//couldn't load xml file
> - return;//return empty WeblogList
> -
> - Element root = document.getRootElement();
> - List weblogs = root.getChild("Weblogs").getChildren();
> - Iterator weblogsIt = weblogs.iterator();
> - //children should all be weblogs
> - while(weblogsIt.hasNext()) {
> - Element blogElement = (Element)weblogsIt.next();
> - Weblog w = createWeblogFromElement(blogElement,path);
> - if(w != null) {
> - w.setBackend(backend);
> - list.addWeblog(w);
> - }
> - }
> - list.sortList();
> - }
> -
> - private static Weblog createWeblogFromElement(Element blogEle, File
path) {
> - Weblog weblog = null;
> - //different weblog types might be added later
> - //for now we're only dealing with TBWeblogs
> - if(blogEle.getName().equals("TBWeblog"))
> - weblog = createTBWeblogFromElement(blogEle, path);
> -
> - if(weblog == null)
> - return null;
> -
> - weblog.setPublishTransport(loadPublishTransportFromXML(blogEle));
> - loadPingServicesFromXML(blogEle, weblog);
> + }
> + }
> + else
> + {
> + transport.setAttribute("type", "local");
> + }
> +
> + return transport;
> + }
> +
> +
> + /**
> + * Creates a WeblogList from an XML file
> + *
> + * @param path The path to the XML file
> + * @param backend The backend to connect the weblogs to
> + * @param authStore The author store for the weblogs
> + * @param catStore The category store for the weblogs
> + * @return A list of weblogs
> + * @throws IOException If an IO error occurs
> + * @throws JDOMException If a JDOM error occurs
> + */
> + public static WeblogList loadWeblogsFromXML(String path, WeblogBackend
backend)
> + throws IOException, JDOMException
> + {
> + WeblogList list = new WeblogList();
> + File f = new File(path);
> + Document document = createDocument(f);
> + loadWeblogList(document, f, list, backend);
> +
> + return list;
> + }
> +
> + private static void loadWeblogList(Document document, File path,
WeblogList list, WeblogBackend backend)
> + {
> + if(document == null)//couldn't load xml file
> + return;//return empty WeblogList
> +
> + Element root = document.getRootElement();
> + List weblogs = root.getChild("Weblogs").getChildren();
> + Iterator weblogsIt = weblogs.iterator();
> + //children should all be weblogs
> + while(weblogsIt.hasNext())
> + {
> + Element blogElement = (Element)weblogsIt.next();
> + Weblog w = createWeblogFromElement(blogElement,path);
> + if(w != null)
> + {
> + w.setBackend(backend);
> + list.addWeblog(w);
> + }
> + }
> + list.sortList();
> + }
> +
> + private static Weblog createWeblogFromElement(Element blogEle, File
> path)
> + {
> + Weblog weblog = null;
> + //different weblog types might be added later
> + //for now we're only dealing with TBWeblogs
> + if(blogEle.getName().equals("TBWeblog"))
> + weblog = createTBWeblogFromElement(blogEle, path);
> +
> + if(weblog == null)
> + return null;
> +
> +
> weblog.setPublishTransport(loadPublishTransportFromXML(blogEle));
> + loadPingServicesFromXML(blogEle, weblog);
> loadEmailSettingsFromXML(blogEle, weblog);
> - weblog.setTitle(blogEle.getAttributeValue("title", "Untitled"));
> - String description = "";
> - Element desc = blogEle.getChild("Description");
> - if(desc != null)
> - description = desc.getText();
> - weblog.setDescription(description);
> - try {
> - long time = Long.parseLong(
> - blogEle.getAttributeValue("last_publish",
> - System.currentTimeMillis() + ""));
> - weblog.setLastPublishDate(new Date(time));
> - } catch(Exception ex){}
> + weblog.setTitle(blogEle.getAttributeValue("title", "Untitled"));
> + String description = "";
> + Element desc = blogEle.getChild("Description");
> + if(desc != null)
> + description = desc.getText();
> + weblog.setDescription(description);
> + try
> + {
> + long time = Long.parseLong(
> + blogEle.getAttributeValue("last_publish",
> + System.currentTimeMillis() + ""));
> + weblog.setLastPublishDate(new Date(time));
> + }
> + catch(Exception ex){}
>
weblog.setPublishFailed(Boolean.parseBoolean(blogEle.getAttributeValue("publish_failed",
"false")));
> -
> +
> return weblog; //element wasn't a known type
> - }
> -
> - private static TBWeblog createTBWeblogFromElement(Element element, File
path) {
> - String key = element.getAttributeValue("key");
> - if(key == null)
> - return null; //can't continue if this weblog doesnt have a
unique key
> -
> - TBWeblog tb = new TBWeblog(path.getParentFile(), key);
> - String genericUrl = "http://www.mysite.com";
> - String basePath = element.getAttributeValue("base_path", "/");
> - String url = element.getAttributeValue("url", genericUrl);
> - String arcUrl = element.getAttributeValue("arc_url", genericUrl);
> - String mediaUrl = element.getAttributeValue("media_url",
genericUrl);
> - tb.setBlogUrls(basePath, url, arcUrl, mediaUrl);
> -
> -
tb.setCategoriesExtension(element.getAttributeValue("cat_ext", ".html"));
> -
tb.setArchivesExtension(element.getAttributeValue("arc_ext", ".html"));
> -
tb.setEntryPageExtension(element.getAttributeValue("entry_ext", ".html"));
> -
tb.setFrontPageFileName(element.getAttributeValue("fp_filename", "blog.html"));
> -
tb.setRssFileName(element.getAttributeValue("rss_filename", "rss.xml"));
> -
tb.setArchiveIndexFileName(element.getAttributeValue("arc_index_filename",
"list.html"));
> -
> + }
> +
> + private static TBWeblog createTBWeblogFromElement(Element element, File
path)
> + {
> + String key = element.getAttributeValue("key");
> + if(key == null)
> + return null; //can't continue if this weblog doesnt
> have a unique key
> +
> + TBWeblog tb = new TBWeblog(path.getParentFile(), key);
> + String genericUrl = "http://www.mysite.com";
> + String basePath = element.getAttributeValue("base_path", "/");
> + String url = element.getAttributeValue("url", genericUrl);
> + String arcUrl = element.getAttributeValue("arc_url",
> genericUrl);
> + String mediaUrl = element.getAttributeValue("media_url",
> genericUrl);
> + tb.setBlogUrls(basePath, url, arcUrl, mediaUrl);
> +
> + tb.setCategoriesExtension(element.getAttributeValue("cat_ext",
> ".html"));
> + tb.setArchivesExtension(element.getAttributeValue("arc_ext",
> ".html"));
> +
tb.setEntryPageExtension(element.getAttributeValue("entry_ext", ".html"));
> +
tb.setFrontPageFileName(element.getAttributeValue("fp_filename", "blog.html"));
> + tb.setRssFileName(element.getAttributeValue("rss_filename",
> "rss.xml"));
> +
tb.setArchiveIndexFileName(element.getAttributeValue("arc_index_filename",
"list.html"));
> +
>
tb.setGenerateCategoryFeeds(element.getAttributeValue("gen_cat_feed",
"false").equals("true"));
>
tb.setCategoriesFeedExtension(element.getAttributeValue("cat_feed_ext",
".rss"));
>
> -
tb.setGenerateRssFeed(element.getAttributeValue("gen_rss",
"true").equals("true"));
> -
tb.setGenerateArchiveIndex(element.getAttributeValue("gen_arc_index",
"true").equals("true"));
> -
tb.setGenerateEntryPages(element.getAttributeValue("gen_entries",
"false").equals("true"));
> -
> - tb.setLocale(createLocale(element.getAttributeValue("locale",
Locale.getDefault().toString())));
> -
tb.setPublishAll(element.getAttributeValue("publish_all",
"true").equals("true"));
> - tb.setType(element.getAttributeValue("type").toString());
> -
> - int arcPolicy = TBWeblog.ARCHIVE_MONTHLY;
> - int dayInterval = 5;
> - Date arcBaseDate = new Date(0);
> - try {
> - arcPolicy = Integer.parseInt(
> - element.getAttributeValue("arc_policy",
Integer.toString(TBWeblog.ARCHIVE_MONTHLY)));
> - dayInterval =
Integer.parseInt(element.getAttributeValue("day_interval", "5"));
> - long time =
Long.parseLong(element.getAttributeValue("base_date"));
> - arcBaseDate = new Date(time);
> - } catch(Exception ex){}
> - tb.setArchivePolicy(arcPolicy);
> - tb.setArchiveByDayInterval(dayInterval);
> - tb.setArchiveBaseDate(arcBaseDate);
> -
> - //load outdated archives from xml
> - Element outdatedArcs = element.getChild("OutdatedArchives");
> - if(outdatedArcs != null) {
> - Iterator itr = (outdatedArcs.getChildren()).iterator();
> - while(itr.hasNext()) {
> - Date start = new Date();
> - Date exp = new Date();
> - Element e = (Element)itr.next();
> - if(e.getName().equals("Archive")) {
> - try {
> - long d1 =
Long.parseLong(e.getAttributeValue("start"));
> - long d2 =
Long.parseLong(e.getAttributeValue("end"));
> - start.setTime(d1);
> - exp.setTime(d2);
> - tb.addOutdatedArchive(new ArchiveRange(start,
exp));
> - } catch(Exception ex){}
> - }
> - }
> - }
> -
> - //load outdated cats from xml
> - Element outdatedCats = element.getChild("OutdatedCategories");
> - if(outdatedCats != null) {
> - Iterator itr = (outdatedCats.getChildren()).iterator();
> - while(itr.hasNext()) {
> - Element e = (Element)itr.next();
> - if(e.getName().equals("Category")) {
> - tb.addOutdatedCategory(e.getText());
> - }
> - }
> - }
> -
> - //load outdated entries from xml
> - Element outdatedEnts = element.getChild("OutdatedEntries");
> - if(outdatedEnts != null) {
> - Iterator itr = (outdatedEnts.getChildren()).iterator();
> - while(itr.hasNext()) {
> - Element e = (Element)itr.next();
> - if(e.getName().equals("Entry")) {
> - try{
> - long id = Long.parseLong(e.getText());
> - tb.addOutdatedEntryID(new Long(id));
> - }catch(Exception ex){}
> - }
> - }
> - }
> -
> - loadGeneratorSettingsFromXML(tb, element);
> - return tb;
> - }
> +
tb.setGenerateRssFeed(element.getAttributeValue("gen_rss",
"true").equals("true"));
> +
tb.setGenerateArchiveIndex(element.getAttributeValue("gen_arc_index",
"true").equals("true"));
> +
tb.setGenerateEntryPages(element.getAttributeValue("gen_entries",
"false").equals("true"));
> +
> + tb.setLocale(createLocale(element.getAttributeValue("locale",
Locale.getDefault().toString())));
> +
tb.setPublishAll(element.getAttributeValue("publish_all",
"true").equals("true"));
> + tb.setType(element.getAttributeValue("type").toString());
> +
> + int arcPolicy = TBWeblog.ARCHIVE_MONTHLY;
> + int dayInterval = 5;
> + Date arcBaseDate = new Date(0);
> + try
> + {
> + arcPolicy = Integer.parseInt(
> + element.getAttributeValue("arc_policy",
Integer.toString(TBWeblog.ARCHIVE_MONTHLY)));
> + dayInterval =
Integer.parseInt(element.getAttributeValue("day_interval", "5"));
> + long time =
> Long.parseLong(element.getAttributeValue("base_date"));
> + arcBaseDate = new Date(time);
> + }
> + catch(Exception ex){}
> + tb.setArchivePolicy(arcPolicy);
> + tb.setArchiveByDayInterval(dayInterval);
> + tb.setArchiveBaseDate(arcBaseDate);
> +
> + //load outdated archives from xml
> + Element outdatedArcs = element.getChild("OutdatedArchives");
> + if(outdatedArcs != null)
> + {
> + Iterator itr = (outdatedArcs.getChildren()).iterator();
> + while(itr.hasNext())
> + {
> + Date start = new Date();
> + Date exp = new Date();
> + Element e = (Element)itr.next();
> + if(e.getName().equals("Archive"))
> + {
> + try
> + {
> + long d1 =
> Long.parseLong(e.getAttributeValue("start"));
> + long d2 =
> Long.parseLong(e.getAttributeValue("end"));
> + start.setTime(d1);
> + exp.setTime(d2);
> + tb.addOutdatedArchive(new
> ArchiveRange(start, exp));
> + }
> + catch(Exception ex){}
> + }
> + }
> + }
> +
> + //load outdated cats from xml
> + Element outdatedCats = element.getChild("OutdatedCategories");
> + if(outdatedCats != null)
> + {
> + Iterator itr = (outdatedCats.getChildren()).iterator();
> + while(itr.hasNext())
> + {
> + Element e = (Element)itr.next();
> + if(e.getName().equals("Category"))
> + {
> + tb.addOutdatedCategory(e.getText());
> + }
> + }
> + }
> +
> + //load outdated entries from xml
> + Element outdatedEnts = element.getChild("OutdatedEntries");
> + if(outdatedEnts != null)
> + {
> + Iterator itr = (outdatedEnts.getChildren()).iterator();
> + while(itr.hasNext())
> + {
> + Element e = (Element)itr.next();
> + if(e.getName().equals("Entry"))
> + {
> + try{
> + long id =
> Long.parseLong(e.getText());
> + tb.addOutdatedEntryID(new Long(id));
> + }catch(Exception ex){}
>
> + }
> + }
> + }
> +
> + loadGeneratorSettingsFromXML(tb, element);
> + return tb;
> + }
> +
> + private static void loadGeneratorSettingsFromXML(TBWeblog tbw, Element
element)
> + {
> + //set up the page generator defaults
> + PageGenerator gen = tbw.getPageGenerator();
> + Element genElement = element.getChild("Generator");
> + if(genElement == null)
> + return;
> +
> + gen.setCharset(genElement.getAttributeValue("charset",
> "UTF-8"));
> + gen.setDateFormat(genElement.getAttributeValue("date_format"));
> + gen.setTimeFormat(genElement.getAttributeValue("time_format"));
> + String s = genElement.getAttributeValue("span_range");
> + boolean span = s != null && s.equals("true");
> +
> gen.setArchiveRangeFormat(genElement.getAttributeValue("range_format"),
span);
> + s = genElement.getAttributeValue("front_asc");
> + gen.setFrontPageAscending(s != null && s.equals("true"));
> + s = genElement.getAttributeValue("arc_asc");
> + gen.setArchivePageAscending(s != null && s.equals("true"));
> + s = genElement.getAttributeValue("cat_asc");
> + gen.setCategoryPageAscending(s != null && s.equals("true"));
> +
> + int fpLimit = 10;
> + int catLimit = 20;
> + try
> + {
> + fpLimit =
Integer.parseInt(genElement.getAttributeValue("front_page_limit"));
> + catLimit =
Integer.parseInt(genElement.getAttributeValue("cat_page_limit"));
> + }
> + catch(Exception ex){}
> +
> +
gen.setLimitFrontPage(genElement.getAttributeValue("limit_front",
"true").equals("true"));
> + gen.setFrontPageLimit(fpLimit);
> +
gen.setLimitCategoryPage(genElement.getAttributeValue("limit_cat",
"true").equals("true"));
> + gen.setCategoryPageLimit(catLimit);
> + s = genElement.getAttributeValue("limit_rss_body");
> + gen.setLimitRssEntry(s != null && s.equals("true"));
> +
> + Element custTags = genElement.getChild("CustomTags");
> + if(custTags == null)return;
> + Iterator itr = custTags.getChildren().iterator();
> + while(itr.hasNext())
> + {
> + Element e = (Element)itr.next();
> + if(e.getName().equals("Tag"))
> + {
> + String name = e.getAttributeValue("name");
> + if(name == null)
> + continue;
> + String value = e.getText();
> + CustomTag tag = new CustomTag(name, value);
> + gen.addCustomTag(tag);
> + }
> + }
> + }
> +
> +
> +
> + private static void loadPingServicesFromXML(Element parent, Weblog blog)
> + {
> + Element services = parent.getChild("PingServices");
> + if(services == null)
> + services = new Element("PingServices");
> +
> + Iterator itr = (services.getChildren()).iterator();
> + while(itr.hasNext())
> + {
> + Element service = (Element)itr.next();
> + if(service.getName().equals("WeblogsDotComPing"))
> + {
> + WeblogsDotComPing ping = new
> WeblogsDotComPing();
> +
> ping.setServiceUrl(service.getAttributeValue("url"));
> +
> ping.setServiceName(service.getAttributeValue("name"));
> +
ping.setEnabled(service.getAttributeValue("enabled", "true").equals("true"));
> + blog.addPingService(ping);
> + }
> + }
> + }
>
> - private static void loadGeneratorSettingsFromXML(TBWeblog tbw, Element
element) {
> - //set up the page generator defaults
> - PageGenerator gen = tbw.getPageGenerator();
> - Element genElement = element.getChild("Generator");
> - if(genElement == null)
> - return;
> -
> - gen.setCharset(genElement.getAttributeValue("charset", "UTF-8"));
> - gen.setDateFormat(genElement.getAttributeValue("date_format"));
> - gen.setTimeFormat(genElement.getAttributeValue("time_format"));
> - String s = genElement.getAttributeValue("span_range");
> - boolean span = s != null && s.equals("true");
> -
gen.setArchiveRangeFormat(genElement.getAttributeValue("range_format"),
span);
> - s = genElement.getAttributeValue("front_asc");
> - gen.setFrontPageAscending(s != null && s.equals("true"));
> - s = genElement.getAttributeValue("arc_asc");
> - gen.setArchivePageAscending(s != null && s.equals("true"));
> - s = genElement.getAttributeValue("cat_asc");
> - gen.setCategoryPageAscending(s != null && s.equals("true"));
> -
> - int fpLimit = 10;
> - int catLimit = 20;
> - try {
> - fpLimit =
Integer.parseInt(genElement.getAttributeValue("front_page_limit"));
> - catLimit =
Integer.parseInt(genElement.getAttributeValue("cat_page_limit"));
> - } catch(Exception ex){}
> -
> -
gen.setLimitFrontPage(genElement.getAttributeValue("limit_front",
"true").equals("true"));
> - gen.setFrontPageLimit(fpLimit);
> -
gen.setLimitCategoryPage(genElement.getAttributeValue("limit_cat",
"true").equals("true"));
> - gen.setCategoryPageLimit(catLimit);
> - s = genElement.getAttributeValue("limit_rss_body");
> - gen.setLimitRssEntry(s != null && s.equals("true"));
> -
> - Element custTags = genElement.getChild("CustomTags");
> - if(custTags == null)return;
> - Iterator itr = custTags.getChildren().iterator();
> - while(itr.hasNext()) {
> - Element e = (Element)itr.next();
> - if(e.getName().equals("Tag")) {
> - String name = e.getAttributeValue("name");
> - if(name == null)
> - continue;
> - String value = e.getText();
> - CustomTag tag = new CustomTag(name, value);
> - gen.addCustomTag(tag);
> - }
> - }
> - }
> -
> -
> -
> - private static void loadPingServicesFromXML(Element parent, Weblog
blog) {
> - Element services = parent.getChild("PingServices");
> - if(services == null)
> - services = new Element("PingServices");
> -
> - Iterator itr = (services.getChildren()).iterator();
> - while(itr.hasNext()) {
> - Element service = (Element)itr.next();
> - if(service.getName().equals("WeblogsDotComPing")) {
> - WeblogsDotComPing ping = new WeblogsDotComPing();
> - ping.setServiceUrl(service.getAttributeValue("url"));
> - ping.setServiceName(service.getAttributeValue("name"));
> -
ping.setEnabled(service.getAttributeValue("enabled", "true").equals("true"));
> - blog.addPingService(ping);
> - }
> - }
> - }
> -
> - private static void loadEmailSettingsFromXML(Element parent, Weblog
blog) {
> + private static void loadEmailSettingsFromXML(Element parent, Weblog
blog)
> + {
> Element mailSettings = parent.getChild("MailSettings");
> if(mailSettings == null)
> return;
> @@ -694,102 +764,126 @@
> configureRemoteTransport(blog.getMailTransport(), transport, 110);
> }
>
> - private static int parseInt(String intStr, int defaultVal) {
> - try {
> + private static int parseInt(String intStr, int defaultVal)
> + {
> + try
> + {
> defaultVal = Integer.parseInt(intStr);
> - } catch(Exception ex){}
> + }
> + catch(Exception ex){}
>
> return defaultVal;
> }
>
> - private static Date parseDate(String epocString) {
> + private static Date parseDate(String epocString)
> + {
> long d = 0;
> - try {
> + try
> + {
> d = Long.parseLong(epocString);
> - } catch(Exception ex){}
> + }
> + catch(Exception ex){}
>
> return new Date(d);
> }
> -
> - private static Locale createLocale(String str) {
> - Vector v = new Vector();
> - if(str != null) {
> - StringTokenizer st = new StringTokenizer(str, "_");
> - while (st.hasMoreTokens()) {
> - v.add(st.nextToken());
> - }
> - }
> -
> - Locale loc = Locale.getDefault();
> - if(v.size() == 3)
> - loc = new Locale(v.elementAt(0).toString(),
> - v.elementAt(1).toString(), v.elementAt(2).toString());
> - else if(v.size() == 2)
> - loc = new Locale(v.elementAt(0).toString(),
> - v.elementAt(1).toString());
> - else if(v.size() == 1)
> - loc = new Locale(v.elementAt(0).toString());
> -
> - return loc;
> - }
> -
> - private static PublishTransport loadPublishTransportFromXML(Element
parent) {
> - Element transport = parent.getChild("Transport");
> - if(transport == null)
> - transport = new Element("Transport");
> - PublishTransport pubTransport = null;
> - String type = transport.getAttributeValue("type", "local");
> -
> - if(type.equals("ftp") || type.equals("sftp")) {
> - RemotePublishTransport rtp = null;
> - int port = 22;
> - if(type.equals("ftp")) {
> - FTPTransport ftp = new FTPTransport();
> -
ftp.setPassiveMode(transport.getAttributeValue("passive",
"true").equals("true"));
> - Element asciiElem = transport.getChild("ASCIITypes");
> +
> + private static Locale createLocale(String str)
> + {
> + Vector v = new Vector();
> + if(str != null)
> + {
> + StringTokenizer st = new StringTokenizer(str, "_");
> + while (st.hasMoreTokens())
> + {
> + v.add(st.nextToken());
> + }
> + }
> +
> + Locale loc = Locale.getDefault();
> + if(v.size() == 3)
> + loc = new Locale(v.elementAt(0).toString(),
> + v.elementAt(1).toString(),
> v.elementAt(2).toString());
> + else if(v.size() == 2)
> + loc = new Locale(v.elementAt(0).toString(),
> + v.elementAt(1).toString());
> + else if(v.size() == 1)
> + loc = new Locale(v.elementAt(0).toString());
> +
> + return loc;
> + }
> +
> + private static PublishTransport loadPublishTransportFromXML(Element
parent)
> + {
> + Element transport = parent.getChild("Transport");
> + if(transport == null)
> + transport = new Element("Transport");
> + PublishTransport pubTransport = null;
> + String type = transport.getAttributeValue("type", "local");
> +
> + if(type.equals("ftp") || type.equals("sftp"))
> + {
> + RemotePublishTransport rtp = null;
> + int port = 22;
> + if(type.equals("ftp"))
> + {
> + FTPTransport ftp = new FTPTransport();
> +
ftp.setPassiveMode(transport.getAttributeValue("passive",
"true").equals("true"));
> + Element asciiElem =
> transport.getChild("ASCIITypes");
> ArrayList lst = new ArrayList();
> - if(asciiElem == null) {
> + if(asciiElem == null)
> + {
> lst.add("cgi");
> lst.add("pl");
> lst.add("php");
> - lst.add("asp");
> - } else {
> + lst.add("asp");
> + }
> + else
> + {
> List ch = asciiElem.getChildren();
> - for(int i = 0; i < ch.size(); i++) {
> + for(int i = 0; i < ch.size(); i++)
> + {
> Element e = (Element)ch.get(i);
> if(e.getName() == "ext");
> - lst.add(e.getText());
> + lst.add(e.getText());
> }
>
> }
> ftp.setASCIIExtentions(lst);
> rtp = ftp;
> - port = 21;
> - } else
> - rtp = new SFTPTransport();
> -
> - configureRemoteTransport(rtp, transport, port);
> - pubTransport = rtp;
> - } else
> - pubTransport = new LocalTransport();
> -
> - return pubTransport;
> - }
> + port = 21;
> + }
> + else
> + rtp = new SFTPTransport();
> +
> + configureRemoteTransport(rtp, transport, port);
> + pubTransport = rtp;
> + }
> + else
> + pubTransport = new LocalTransport();
> +
> + return pubTransport;
> + }
>
> - private static void configureRemoteTransport(RemoteTransport rtp,
Element transport, int defaultPort) {
> - try {
> + private static void configureRemoteTransport(RemoteTransport rtp,
Element transport, int defaultPort)
> + {
> + try
> + {
> defaultPort =
Integer.parseInt(transport.getAttributeValue("port"));
> }catch(Exception ex){}
>
> - rtp.setPort(defaultPort);
> + rtp.setPort(defaultPort);
> rtp.setAddress(transport.getAttributeValue("server"));
> rtp.setUserName(transport.getAttributeValue("user"));
> - String password = transport.getAttributeValue("password");
> + String password = transport.getAttributeValue("password");
> rtp.setSavePassword(password != null);
> - if(rtp.isSavePassword()) {
> - try {
> + if(rtp.isSavePassword())
> + {
> + try
> + {
> password = PasswordUtil.decrypt(password,
PasswordUtil.KEY);
> - } catch(Exception ex) {
> + }
> + catch(Exception ex)
> + {
> password = "";
> }
> rtp.setPassword(password);
>
> _______________________________________________
> cvs mailing list
> cvs at freenetproject.org
> http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs
>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL:
<https://emu.freenetproject.org/pipermail/devl/attachments/20080212/2be18d48/attachment.pgp>