KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > openedit > archive > update > ExifEditBuilder


1 package com.openedit.archive.update;
2
3 import java.util.ArrayList JavaDoc;
4 import java.util.Iterator JavaDoc;
5 import java.util.List JavaDoc;
6
7 import org.apache.commons.logging.Log;
8 import org.apache.commons.logging.LogFactory;
9
10 public class ExifEditBuilder {
11     private static final String JavaDoc _SUPPRESS_BACKUP_IMAGE = "/b";
12
13     private final static String JavaDoc Q = "\"";
14
15     private final static String JavaDoc EscQ = "\\\"";
16
17     private static final Log log = LogFactory.getLog(ExifEditBuilder.class);
18
19     boolean valid = true;
20
21     String JavaDoc filename = "";
22
23     String JavaDoc comments = "";
24
25     List JavaDoc ip_keywords = new ArrayList JavaDoc();
26
27     private boolean makeBackupImage = false;
28
29     public void makeBackupImage() {
30         makeBackupImage = true;
31     }
32
33     public ExifEditBuilder(String JavaDoc filename) {
34         this.filename = filename;
35     }
36
37     public String JavaDoc cmdLineStr() {
38         String JavaDoc result = "";
39         boolean first = true;
40         List JavaDoc args = cmdLine();
41         if (args == null)
42             return null;
43         for (Iterator JavaDoc iter = args.iterator(); iter.hasNext();) {
44             String JavaDoc element = (String JavaDoc) iter.next();
45             if (!first)
46                 result += " ";
47             result += element;
48             first = false;
49         }
50         return result;
51     }
52
53     public List JavaDoc cmdLine() {
54         if (!valid)
55             return null;
56
57         List JavaDoc cmd = new ArrayList JavaDoc();
58         cmd.add("exifedit");
59         addBackupFlag(cmd);
60         if (!keywordValid())
61             return null;
62         addNickNames(cmd);
63         addFilename(cmd);
64         return cmd;
65     }
66
67     private boolean keywordValid() {
68         for (Iterator JavaDoc iter = ip_keywords.iterator(); iter.hasNext();) {
69             String JavaDoc keyword = (String JavaDoc) iter.next();
70             if (keyword.contains(";")) {
71                 valid = false;
72                 return false;
73             }
74         }
75         return true;
76     }
77
78     private void addFilename(List JavaDoc cmd) {
79         cmd.add(filename);
80     }
81
82     private void addBackupFlag(List JavaDoc cmd) {
83         if (!makeBackupImage)
84             cmd.add(_SUPPRESS_BACKUP_IMAGE);
85     }
86
87     private void addNickNames(List JavaDoc cmd) {
88         cmd.add("/a");
89         String JavaDoc nicknames = "";
90         nicknames = addKeywords(nicknames);
91         nicknames = addComments(nicknames);
92         cmd.add(quote(nicknames));
93     }
94
95     private String JavaDoc addComments(String JavaDoc nicknames) {
96         if (comments == null || comments.length() == 0)
97             return nicknames;
98         return nicknames += ",comment=" + Q + comments + Q;
99     }
100
101     private String JavaDoc addKeywords(String JavaDoc nicknames) {
102         boolean first = true;
103         for (Iterator JavaDoc iter = ip_keywords.iterator(); iter.hasNext();) {
104             String JavaDoc keyword = (String JavaDoc) iter.next();
105             if (!first)
106                 nicknames += ",";
107             nicknames += "ip-keyword=" + Q + keyword + Q;
108             first = false;
109         }
110         return nicknames;
111     }
112
113     public String JavaDoc quote(String JavaDoc nicknames) {
114         nicknames = nicknames.replace(Q, EscQ);
115         return Q + nicknames + Q;
116     }
117
118     public void setKeys(List JavaDoc ip_keywords) {
119         if (ip_keywords.isEmpty()) {
120             log.warn("Empty list of keywords for file: " + filename);
121             valid = false;
122             return;
123         }
124         this.ip_keywords = ip_keywords;
125     }
126
127     public void setComments(String JavaDoc comments) {
128         this.comments = comments;
129     }
130
131 }
132
Popular Tags