Author: jjohnstn
Date: 2010-10-06 18:59:04 -0400 (Wed, 06 Oct 2010)
New Revision: 25541
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/AllFieldMatcher.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/AllImageFilter.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/FieldMatcher.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/IFieldMatcher.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/IImageFilter.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/ImageFilter.java
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/ChangeLog
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/DeltaCloud.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/DeltaCloudManager.java
Log:
2010-10-06 Jeff Johnston <jjohnstn(a)redhat.com>
* src/org/jboss/tools/deltacloud/core/AllFieldMatcher.java: New file.
* src/org/jboss/tools/deltacloud/core/AllImageFilter.java: New file.
* src/org/jboss/tools/deltacloud/core/FieldMatcher.java: New file.
* src/org/jboss/tools/deltacloud/core/IFieldMatcher.java: New file.
* src/org/jboss/tools/deltacloud/core/IImageFilter.java: New file.
* src/org/jboss/tools/deltacloud/core/ImageFilter.java: New file.
* src/org/jboss/tools/deltacloud/core/DeltaCloud.java (save): New method.
(createImageFilter): Ditto.
(getImageFilter): Ditto.
(DeltaCloud): Add a image filter rules parameter.
* src/org/jboss/tools/deltacloud/core/DeltaCloudManager.java (loadClouds): Add
check for image filtering rules.
(saveClouds): Save image filtering rules.
Modified: trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/ChangeLog
===================================================================
--- trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/ChangeLog 2010-10-06 22:58:03
UTC (rev 25540)
+++ trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/ChangeLog 2010-10-06 22:59:04
UTC (rev 25541)
@@ -1,3 +1,19 @@
+2010-10-06 Jeff Johnston <jjohnstn(a)redhat.com>
+
+ * src/org/jboss/tools/deltacloud/core/AllFieldMatcher.java: New file.
+ * src/org/jboss/tools/deltacloud/core/AllImageFilter.java: New file.
+ * src/org/jboss/tools/deltacloud/core/FieldMatcher.java: New file.
+ * src/org/jboss/tools/deltacloud/core/IFieldMatcher.java: New file.
+ * src/org/jboss/tools/deltacloud/core/IImageFilter.java: New file.
+ * src/org/jboss/tools/deltacloud/core/ImageFilter.java: New file.
+ * src/org/jboss/tools/deltacloud/core/DeltaCloud.java (save): New method.
+ (createImageFilter): Ditto.
+ (getImageFilter): Ditto.
+ (DeltaCloud): Add a image filter rules parameter.
+ * src/org/jboss/tools/deltacloud/core/DeltaCloudManager.java (loadClouds): Add
+ check for image filtering rules.
+ (saveClouds): Save image filtering rules.
+
2010-09-17 Jeff Johnston <jjohnstn(a)redhat.com>
* src/org/jboss/tools/deltacloud/core/DeltaCloud.java (editCloud): New method.
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/AllFieldMatcher.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/AllFieldMatcher.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/AllFieldMatcher.java 2010-10-06
22:59:04 UTC (rev 25541)
@@ -0,0 +1,15 @@
+package org.jboss.tools.deltacloud.core;
+
+public class AllFieldMatcher implements IFieldMatcher {
+
+ @Override
+ public boolean matches(String input) {
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ return "*"; //$NON-NLS-1$
+ }
+
+}
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/AllImageFilter.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/AllImageFilter.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/AllImageFilter.java 2010-10-06
22:59:04 UTC (rev 25541)
@@ -0,0 +1,38 @@
+package org.jboss.tools.deltacloud.core;
+
+public class AllImageFilter implements IImageFilter {
+
+ private IFieldMatcher matcher = new AllFieldMatcher();
+
+ @Override
+ public boolean isVisible(DeltaCloudImage image) {
+ return true;
+ }
+
+ @Override
+ public void setRules(String ruleString) {
+ // ignore, never set the rules for this filter
+ }
+
+ @Override
+ public String toString() {
+ return ALL_STRING;
+ }
+
+ public IFieldMatcher getNameRule() {
+ return matcher; //$NON-NLS-1$
+ }
+
+ public IFieldMatcher getIdRule() {
+ return matcher; //$NON-NLS-1$
+ }
+
+ public IFieldMatcher getArchRule() {
+ return matcher; //$NON-NLS-1$
+ }
+
+ public IFieldMatcher getDescRule() {
+ return matcher; //$NON-NLS-1$
+ }
+
+}
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/DeltaCloud.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/DeltaCloud.java 2010-10-06
22:58:03 UTC (rev 25540)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/DeltaCloud.java 2010-10-06
22:59:04 UTC (rev 25541)
@@ -41,6 +41,7 @@
private DeltaCloudClient client;
private ArrayList<DeltaCloudInstance> instances;
private ArrayList<DeltaCloudImage> images;
+ private IImageFilter imageFilter;
private Map<String, Job> actionJobs;
private Object imageLock = new Object();
private Object instanceLock = new Object();
@@ -50,15 +51,23 @@
ListenerList imageListeners = new ListenerList();
public DeltaCloud(String name, String url, String username, String passwd) throws
MalformedURLException {
- this(name, url, username, passwd, null, false);
+ this(name, url, username, passwd, null, false, IImageFilter.ALL_STRING);
}
- public DeltaCloud(String name, String url, String username, String passwd, String type,
boolean persistent) throws MalformedURLException {
+ public DeltaCloud(String name, String url, String username, String passwd,
+ String type, boolean persistent) throws MalformedURLException {
+ this(name, url, username, passwd, null, persistent, IImageFilter.ALL_STRING);
+ }
+
+ public DeltaCloud(String name, String url, String username, String passwd,
+ String type, boolean persistent, String imageFilterRules) throws MalformedURLException
{
this.client = new DeltaCloudClient(new URL(url + "/api"), username, passwd);
//$NON-NLS-1$
this.url = url;
this.name = name;
this.username = username;
this.type = type;
+ imageFilter = new ImageFilter();
+ imageFilter.setRules(imageFilterRules);
if (persistent) {
ISecurePreferences root = SecurePreferencesFactory.getDefault();
String key = DeltaCloud.getPreferencesKey(url, username);
@@ -109,6 +118,24 @@
return type;
}
+ public IImageFilter getImageFilter() {
+ return imageFilter;
+ }
+
+ public void createImageFilter(String ruleString) {
+ String rules = getImageFilter().toString();
+ if (IImageFilter.ALL_STRING.equals(ruleString))
+ imageFilter = new AllImageFilter();
+ else {
+ imageFilter = new ImageFilter();
+ imageFilter.setRules(ruleString);
+ }
+ if (!rules.equals(ruleString)) {
+ save();
+ notifyImageListListeners(getCurrImages());
+ }
+ }
+
public void loadChildren() {
Thread t = new Thread(new Runnable() {
@@ -122,6 +149,11 @@
t.start();
}
+ private void save() {
+ // Currently we have to save all clouds instead of just this one
+ DeltaCloudManager.getDefault().saveClouds();
+ }
+
public void addInstanceListListener(IInstanceListListener listener) {
instanceListeners.add(listener);
}
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/DeltaCloudManager.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/DeltaCloudManager.java 2010-10-06
22:58:03 UTC (rev 25540)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/DeltaCloudManager.java 2010-10-06
22:59:04 UTC (rev 25541)
@@ -62,17 +62,24 @@
Node urlNode = attrs.getNamedItem("url"); // $NON-NLS-1$
Node usernameNode = attrs.getNamedItem("username"); // $NON-NLS-1$
Node typeNode = attrs.getNamedItem("type"); // $NON-NLS-1$
+ Node imageFilterNode = attrs.getNamedItem("imagefilter"); //$NON-NLS-1$
String name = nameNode.getNodeValue();
String url = urlNode.getNodeValue();
String username = usernameNode.getNodeValue();
String type = typeNode.getNodeValue();
String key = DeltaCloud.getPreferencesKey(url, username);
+ String imageFilterRules = null;
+ if (imageFilterNode != null)
+ imageFilterRules = imageFilterNode.getNodeValue();
+ else
+ imageFilterRules = IImageFilter.ALL_STRING;
ISecurePreferences root = SecurePreferencesFactory.getDefault();
ISecurePreferences node = root.node(key);
String password;
try {
password = node.get("password", null); //$NON-NLS-1$
- DeltaCloud cloud = new DeltaCloud(name, url, username, password, type, false);
+ DeltaCloud cloud = new DeltaCloud(name, url, username, password, type,
+ false, imageFilterRules);
cloud.loadChildren();
clouds.add(cloud);
} catch (Exception e1) {
@@ -90,7 +97,7 @@
}
}
- private void saveClouds() {
+ public void saveClouds() {
try {
IPath stateLocation = Activator.getDefault().getStateLocation();
File cloudFile = stateLocation.append(CLOUDFILE_NAME).toFile();
@@ -104,7 +111,8 @@
p.println("<cloud name=\"" + d.getName() + "\"
url=\"" //$NON-NLS-1$ //$NON-NLS-2$
+ d.getURL() +
"\" username=\"" + d.getUsername() +
- "\" type=\"" + d.getType() + "\"/>");
//$NON-NLS-1$ //$NON-NLS-2$
+ "\" type=\"" + d.getType() +
+ "\" imagefilter=\"" + d.getImageFilter() +
"\"/>"); //$NON-NLS-1$ //$NON-NLS-2$
}
p.println("</clouds>"); //$NON-NLS-1$
p.close();
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/FieldMatcher.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/FieldMatcher.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/FieldMatcher.java 2010-10-06
22:59:04 UTC (rev 25541)
@@ -0,0 +1,27 @@
+package org.jboss.tools.deltacloud.core;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class FieldMatcher implements IFieldMatcher {
+
+ private String rule;
+ private Pattern pattern;
+
+ public FieldMatcher(String rule) {
+ this.rule = rule;
+ pattern = Pattern.compile(rule);
+ }
+
+ @Override
+ public boolean matches(String input) {
+ Matcher m = pattern.matcher(input);
+ return m.matches();
+ }
+
+ @Override
+ public String toString() {
+ return rule;
+ }
+
+}
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/IFieldMatcher.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/IFieldMatcher.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/IFieldMatcher.java 2010-10-06
22:59:04 UTC (rev 25541)
@@ -0,0 +1,7 @@
+package org.jboss.tools.deltacloud.core;
+
+public interface IFieldMatcher {
+
+ public boolean matches(String input);
+
+}
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/IImageFilter.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/IImageFilter.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/IImageFilter.java 2010-10-06
22:59:04 UTC (rev 25541)
@@ -0,0 +1,13 @@
+package org.jboss.tools.deltacloud.core;
+
+public interface IImageFilter {
+
+ public final static String ALL_STRING = "*;*;*;*"; //$NON-NLS-1$
+
+ public boolean isVisible(DeltaCloudImage image);
+ public void setRules(String ruleString);
+ public IFieldMatcher getNameRule();
+ public IFieldMatcher getIdRule();
+ public IFieldMatcher getArchRule();
+ public IFieldMatcher getDescRule();
+}
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/ImageFilter.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/ImageFilter.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/ImageFilter.java 2010-10-06
22:59:04 UTC (rev 25541)
@@ -0,0 +1,66 @@
+package org.jboss.tools.deltacloud.core;
+
+public class ImageFilter implements IImageFilter {
+
+ private IFieldMatcher nameRule;
+ private IFieldMatcher idRule;
+ private IFieldMatcher archRule;
+ private IFieldMatcher descRule;
+
+ @Override
+ public boolean isVisible(DeltaCloudImage image) {
+ return nameRule.matches(image.getName()) &&
+ idRule.matches(image.getId()) &&
+ archRule.matches(image.getArchitecture()) &&
+ descRule.matches(image.getDescription());
+ }
+
+ @Override
+ public void setRules(String ruleString) {
+ String[] tokens = ruleString.split(";");
+ if (tokens[0].equals("*")) {
+ nameRule = new AllFieldMatcher();
+ } else {
+ nameRule = new FieldMatcher(tokens[0]);
+ }
+ if (tokens[1].equals("*")) {
+ idRule = new AllFieldMatcher();
+ } else {
+ idRule = new FieldMatcher(tokens[1]);
+ }
+ if (tokens[2].equals("*")) {
+ archRule = new AllFieldMatcher();
+ } else {
+ archRule = new FieldMatcher(tokens[2]);
+ }
+ if (tokens[3].equals("*")) {
+ descRule = new AllFieldMatcher();
+ } else {
+ descRule = new FieldMatcher(tokens[3]);
+ }
+ }
+
+ @Override
+ public String toString() {
+ return nameRule + ";" //$NON-NLS-1$
+ + idRule + ";" //$NON-NLS-1$
+ + archRule + ";" //$NON-NLS-1$
+ + descRule; //$NON-NLS-1$
+ }
+
+ public IFieldMatcher getNameRule() {
+ return nameRule;
+ }
+
+ public IFieldMatcher getIdRule() {
+ return idRule;
+ }
+
+ public IFieldMatcher getArchRule() {
+ return archRule;
+ }
+
+ public IFieldMatcher getDescRule() {
+ return descRule;
+ }
+}