001 /**
002 *
003 * Licensed to the Apache Software Foundation (ASF) under one or more
004 * contributor license agreements. See the NOTICE file distributed with
005 * this work for additional information regarding copyright ownership.
006 * The ASF licenses this file to You under the Apache License, Version 2.0
007 * (the "License"); you may not use this file except in compliance with
008 * the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018 package org.apache.geronimo.console.databasemanager.wizard;
019
020 import org.apache.geronimo.kernel.repository.Artifact;
021 import org.apache.geronimo.gbean.GBeanInfo;
022 import org.apache.geronimo.gbean.GBeanInfoBuilder;
023
024 import java.util.regex.Pattern;
025 import java.util.regex.Matcher;
026 import java.util.List;
027 import java.util.ArrayList;
028 import java.util.Set;
029 import java.util.HashSet;
030
031 /**
032 * Implementation of DatabaseDriver that contains database driver information
033 * contained in the console's deployment plan.
034 *
035 * @version $Rev: 706640 $ $Date: 2008-10-21 14:44:05 +0000 (Tue, 21 Oct 2008) $
036 */
037 public class DatabaseDriverGBean implements DatabaseDriver {
038 private final static Pattern PARAM_PATTERN = Pattern.compile("\\{.+?\\}");
039 private String name;
040 private String URLPrototype;
041 private String driverClassName;
042 private int defaultPort;
043 private boolean specific;
044 private Artifact RAR;
045 private Set<Artifact> dependencyFilters;
046
047 public String getName() {
048 return name;
049 }
050
051 public void setName(String name) {
052 this.name = name;
053 }
054
055 public String getURLPrototype() {
056 return URLPrototype;
057 }
058
059 public void setURLPrototype(String URLPrototype) {
060 this.URLPrototype = URLPrototype;
061 }
062
063 public String getDriverClassName() {
064 return driverClassName;
065 }
066
067 public void setDriverClassName(String driverClassName) {
068 this.driverClassName = driverClassName;
069 }
070
071 public int getDefaultPort() {
072 return defaultPort;
073 }
074
075 public void setDefaultPort(int defaultPort) {
076 this.defaultPort = defaultPort;
077 }
078
079 public boolean isSpecific() {
080 return specific;
081 }
082
083 public void setSpecific(boolean specific) {
084 this.specific = specific;
085 }
086
087 public Artifact getRAR() {
088 return RAR;
089 }
090
091 public void setDependencyFilterStrings(List<String> filterStrings) {
092 dependencyFilters = new HashSet<Artifact>();
093 for (String filterString: filterStrings) {
094 Artifact filter = Artifact.createPartial(filterString);
095 dependencyFilters.add(filter);
096 }
097 }
098
099 public Set<Artifact> getDependencyFilters() {
100 return dependencyFilters != null && !dependencyFilters.isEmpty()? dependencyFilters : null;
101 }
102
103 public void setRARName(String name) {
104 RAR = Artifact.create(name);
105 }
106
107 public List<String> getURLParameters() {
108 Matcher m = PARAM_PATTERN.matcher(URLPrototype);
109 List<String> list = new ArrayList<String>();
110 while(m.find()) {
111 list.add(URLPrototype.substring(m.start()+1, m.end()-1));
112 }
113 return list;
114 }
115
116 public static final GBeanInfo GBEAN_INFO;
117
118 static {
119 GBeanInfoBuilder infoFactory = GBeanInfoBuilder.createStatic("Database Driver Info", DatabaseDriverGBean.class);
120 infoFactory.addAttribute("name", String.class, true, true);
121 infoFactory.addAttribute("URLPrototype", String.class, true, true);
122 infoFactory.addAttribute("driverClassName", String.class, true, true);
123 infoFactory.addAttribute("defaultPort", int.class, true, true);
124 infoFactory.addAttribute("specific", boolean.class, true, true);
125 infoFactory.addAttribute("RARName", String.class, true, true);
126 infoFactory.addAttribute("dependencyFilterStrings", List.class, true, true);
127 infoFactory.addAttribute("dependencyFilters", Set.class, false, false);
128 infoFactory.addInterface(DatabaseDriver.class);
129
130 GBEAN_INFO = infoFactory.getBeanInfo();
131 }
132
133 public static GBeanInfo getGBeanInfo() {
134 return GBEAN_INFO;
135 }
136 }