Quantum version 2.4.1
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.quantum.sql / src / com / quantum / wizards / URLBuilder.java
diff --git a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/wizards/URLBuilder.java b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/wizards/URLBuilder.java
new file mode 100644 (file)
index 0000000..a22233a
--- /dev/null
@@ -0,0 +1,67 @@
+package com.quantum.wizards;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.StringTokenizer;
+
+
+/**
+ * <p>This class takes a URL pattern and creates a full URL.  A URL pattern might look
+ * like this: <code>jdbc:postgresql://{hostname}:{port}/{dbname}</code>, and the 
+ * properties should include "hostname", "port" and "dbname". 
+ * 
+ * @author BC Holmes
+ */
+public class URLBuilder {
+
+       public static String createURL(String urlPattern, Map properties) {
+               StringBuffer buffer = new StringBuffer();
+               boolean isVariable = false;
+               String variableName = null;
+               for (StringTokenizer tokenizer = new StringTokenizer(urlPattern, "{}", true);
+                       tokenizer.hasMoreTokens(); ) {
+                       String token = tokenizer.nextToken();
+                       
+                       if ("{".equals(token) && !isVariable) {
+                               isVariable = true;
+                       } else if (isVariable && "}".equals(token) && variableName != null) {
+                               if (!properties.containsKey(variableName)) {
+                                       buffer.append("{");
+                                       buffer.append(variableName);
+                                       buffer.append("}");
+                               } else {
+                                       buffer.append(properties.get(variableName));
+                               }
+                               isVariable = false;
+                       } else if (isVariable) {
+                               variableName = token;
+                       } else {
+                               buffer.append(token);
+                       }
+               }
+               return buffer.toString();
+       }
+
+       public static String[] getVariableNames(String urlPattern) {
+               List list = new ArrayList();
+               if (urlPattern != null) {
+                       boolean isVariable = false;
+                       String variableName = null;
+                       for (StringTokenizer tokenizer = new StringTokenizer(urlPattern, "{}", true);
+                               tokenizer.hasMoreTokens(); ) {
+                               String token = tokenizer.nextToken();
+                               
+                               if ("{".equals(token) && !isVariable) {
+                                       isVariable = true;
+                               } else if (isVariable && "}".equals(token) && variableName != null) {
+                                       list.add(variableName);
+                                       isVariable = false;
+                               } else if (isVariable) {
+                                       variableName = token;
+                               }
+                       }
+               }
+               return (String[]) list.toArray(new String[list.size()]);
+       }
+}