You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by fm...@apache.org on 2010/10/06 14:32:26 UTC
svn commit: r1005006 [4/5] - in /incubator/chemistry/opencmis/trunk: ./
chemistry-opencmis-workbench/
chemistry-opencmis-workbench/chemistry-opencmis-workbench/
chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/
chemistry-opencmis-workbench...
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/ClientSession.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/ClientSession.java?rev=1005006&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/ClientSession.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/ClientSession.java Wed Oct 6 12:32:23 2010
@@ -0,0 +1,237 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.chemistry.opencmis.workbench.model;
+
+import java.net.Authenticator;
+import java.security.cert.X509Certificate;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+
+import org.apache.chemistry.opencmis.client.api.ObjectType;
+import org.apache.chemistry.opencmis.client.api.OperationContext;
+import org.apache.chemistry.opencmis.client.api.Repository;
+import org.apache.chemistry.opencmis.client.api.Session;
+import org.apache.chemistry.opencmis.client.bindings.CmisBindingFactory;
+import org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl;
+import org.apache.chemistry.opencmis.commons.PropertyIds;
+import org.apache.chemistry.opencmis.commons.SessionParameter;
+import org.apache.chemistry.opencmis.commons.definitions.PropertyDefinition;
+import org.apache.chemistry.opencmis.commons.enums.BaseTypeId;
+import org.apache.chemistry.opencmis.commons.enums.BindingType;
+import org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
+
+public class ClientSession {
+
+ public static final String WORKBENCH_PREFIX = "cmis.workbench.";
+ public static final String OBJECT_PREFIX = WORKBENCH_PREFIX + "object.";
+ public static final String FOLDER_PREFIX = WORKBENCH_PREFIX + "folder.";
+ public static final String ACCEPT_SELF_SIGNED_CERTIFICATES = WORKBENCH_PREFIX + "acceptSelfSignedCertificates";
+
+ public enum Authentication {
+ NONE, STANDARD, NTLM
+ }
+
+ private static final Set<String> PROPERTY_SET = new HashSet<String>();
+ static {
+ PROPERTY_SET.add(PropertyIds.OBJECT_ID);
+ PROPERTY_SET.add(PropertyIds.OBJECT_TYPE_ID);
+ PROPERTY_SET.add(PropertyIds.NAME);
+ PROPERTY_SET.add(PropertyIds.CONTENT_STREAM_MIME_TYPE);
+ PROPERTY_SET.add(PropertyIds.CONTENT_STREAM_LENGTH);
+ PROPERTY_SET.add(PropertyIds.CONTENT_STREAM_FILE_NAME);
+ PROPERTY_SET.add(PropertyIds.CREATED_BY);
+ PROPERTY_SET.add(PropertyIds.CREATION_DATE);
+ PROPERTY_SET.add(PropertyIds.LAST_MODIFIED_BY);
+ PROPERTY_SET.add(PropertyIds.LAST_MODIFICATION_DATE);
+ }
+
+ private Map<String, String> sessionParameters;
+ private List<Repository> repositories;
+ private Session session;
+ private OperationContext objectOperationContext;
+ private OperationContext folderOperationContext;
+
+ public ClientSession(String url, BindingType binding, String username, String password, Authentication authenticaion) {
+ Map<String, String> parameters = new HashMap<String, String>();
+
+ if (binding == BindingType.WEBSERVICES) {
+ parameters.put(SessionParameter.BINDING_TYPE, BindingType.WEBSERVICES.value());
+ parameters.put(SessionParameter.WEBSERVICES_REPOSITORY_SERVICE, url);
+ parameters.put(SessionParameter.WEBSERVICES_NAVIGATION_SERVICE, url);
+ parameters.put(SessionParameter.WEBSERVICES_OBJECT_SERVICE, url);
+ parameters.put(SessionParameter.WEBSERVICES_VERSIONING_SERVICE, url);
+ parameters.put(SessionParameter.WEBSERVICES_DISCOVERY_SERVICE, url);
+ parameters.put(SessionParameter.WEBSERVICES_MULTIFILING_SERVICE, url);
+ parameters.put(SessionParameter.WEBSERVICES_RELATIONSHIP_SERVICE, url);
+ parameters.put(SessionParameter.WEBSERVICES_ACL_SERVICE, url);
+ parameters.put(SessionParameter.WEBSERVICES_POLICY_SERVICE, url);
+ } else {
+ parameters.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value());
+ parameters.put(SessionParameter.ATOMPUB_URL, url);
+ }
+
+ switch (authenticaion) {
+ case STANDARD:
+ parameters.put(SessionParameter.USER, username);
+ parameters.put(SessionParameter.PASSWORD, password);
+ break;
+ case NTLM:
+ parameters.put(SessionParameter.USER, username);
+ parameters.put(SessionParameter.PASSWORD, password);
+ parameters.put(SessionParameter.AUTHENTICATION_PROVIDER_CLASS,
+ CmisBindingFactory.NTLM_AUTHENTICATION_PROVIDER);
+ break;
+ }
+
+ // get additional workbench properties from system properties
+ Properties sysProps = System.getProperties();
+ for (String key : sysProps.stringPropertyNames()) {
+ if (key.startsWith(WORKBENCH_PREFIX)) {
+ parameters.put(key, sysProps.getProperty(key));
+ }
+ }
+
+ connect(parameters);
+ }
+
+ public ClientSession(Map<String, String> sessionParameters) {
+ if (sessionParameters == null) {
+ throw new IllegalArgumentException("Parameters must not be null!");
+ }
+
+ connect(sessionParameters);
+ }
+
+ private void connect(Map<String, String> sessionParameters) {
+ this.sessionParameters = sessionParameters;
+
+ // set a new dummy authenticator
+ // don't send previous credentials to another server
+ Authenticator.setDefault(new Authenticator() {
+ });
+
+ if (Boolean.parseBoolean(sessionParameters.get(ACCEPT_SELF_SIGNED_CERTIFICATES))) {
+ acceptSelfSignedCertificates();
+ }
+
+ repositories = SessionFactoryImpl.newInstance().getRepositories(sessionParameters);
+ }
+
+ public List<Repository> getRepositories() {
+ return repositories;
+ }
+
+ public Session createSession(int index) {
+ session = repositories.get(index).createSession();
+ createOperationContexts();
+ return getSession();
+ }
+
+ public Session getSession() {
+ return session;
+ }
+
+ public OperationContext getObjectOperationContext() {
+ return objectOperationContext;
+ }
+
+ public OperationContext getFolderOperationContext() {
+ return folderOperationContext;
+ }
+
+ private void createOperationContexts() {
+ // object operation context
+ setDefault(OBJECT_PREFIX, sessionParameters, ClientOperationContext.FILTER, "*");
+ setDefault(OBJECT_PREFIX, sessionParameters, ClientOperationContext.INCLUDE_ACLS, "true");
+ setDefault(OBJECT_PREFIX, sessionParameters, ClientOperationContext.INCLUDE_ALLOWABLE_ACTIONS, "true");
+ setDefault(OBJECT_PREFIX, sessionParameters, ClientOperationContext.INCLUDE_POLICIES, "true");
+ setDefault(OBJECT_PREFIX, sessionParameters, ClientOperationContext.INCLUDE_RELATIONSHIPS,
+ IncludeRelationships.BOTH.value());
+ setDefault(OBJECT_PREFIX, sessionParameters, ClientOperationContext.RENDITION_FILTER, "*");
+ setDefault(OBJECT_PREFIX, sessionParameters, ClientOperationContext.ORDER_BY, null);
+ setDefault(OBJECT_PREFIX, sessionParameters, ClientOperationContext.MAX_ITEMS_PER_PAGE, "1000");
+
+ objectOperationContext = new ClientOperationContext(OBJECT_PREFIX, sessionParameters);
+
+ // folder operation context
+ if (!sessionParameters.containsKey(FOLDER_PREFIX + ClientOperationContext.FILTER)) {
+ ObjectType type = session.getTypeDefinition(BaseTypeId.CMIS_DOCUMENT.value());
+
+ StringBuilder filter = new StringBuilder();
+ for (String propId : PROPERTY_SET) {
+ PropertyDefinition<?> propDef = type.getPropertyDefinitions().get(propId);
+ if (propDef != null) {
+ if (filter.length() > 0) {
+ filter.append(",");
+ }
+ filter.append(propDef.getQueryName());
+ }
+ }
+
+ sessionParameters.put(FOLDER_PREFIX + ClientOperationContext.FILTER, filter.toString());
+ }
+
+ setDefault(FOLDER_PREFIX, sessionParameters, ClientOperationContext.INCLUDE_ACLS, "false");
+ setDefault(FOLDER_PREFIX, sessionParameters, ClientOperationContext.INCLUDE_ALLOWABLE_ACTIONS, "false");
+ setDefault(FOLDER_PREFIX, sessionParameters, ClientOperationContext.INCLUDE_POLICIES, "false");
+ setDefault(FOLDER_PREFIX, sessionParameters, ClientOperationContext.INCLUDE_RELATIONSHIPS,
+ IncludeRelationships.NONE.value());
+ setDefault(FOLDER_PREFIX, sessionParameters, ClientOperationContext.RENDITION_FILTER, "cmis:none");
+ setDefault(FOLDER_PREFIX, sessionParameters, ClientOperationContext.ORDER_BY, null);
+ setDefault(FOLDER_PREFIX, sessionParameters, ClientOperationContext.MAX_ITEMS_PER_PAGE, "1000");
+
+ folderOperationContext = new ClientOperationContext(FOLDER_PREFIX, sessionParameters);
+ }
+
+ private void setDefault(String prefix, Map<String, String> map, String key, String value) {
+ if (!map.containsKey(prefix + key)) {
+ map.put(prefix + key, value);
+ }
+ }
+
+ private void acceptSelfSignedCertificates() {
+ TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
+ public X509Certificate[] getAcceptedIssuers() {
+ return null;
+ }
+
+ public void checkClientTrusted(X509Certificate[] certs, String authType) {
+ }
+
+ public void checkServerTrusted(X509Certificate[] certs, String authType) {
+ }
+ } };
+
+ try {
+ SSLContext sc = SSLContext.getInstance("SSL");
+ sc.init(null, trustAllCerts, new java.security.SecureRandom());
+ HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
+ } catch (Exception e) {
+ }
+ }
+}
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/ClientSession.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/FolderListener.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/FolderListener.java?rev=1005006&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/FolderListener.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/FolderListener.java Wed Oct 6 12:32:23 2010
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.chemistry.opencmis.workbench.model;
+
+import java.util.EventListener;
+
+public interface FolderListener extends EventListener {
+
+ void folderLoaded(ClientModelEvent event);
+}
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/FolderListener.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/MIMETypes.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/MIMETypes.java?rev=1005006&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/MIMETypes.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/MIMETypes.java Wed Oct 6 12:32:23 2010
@@ -0,0 +1,253 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.chemistry.opencmis.workbench.model;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+
+public class MIMETypes {
+
+ private static Map<String, String> EXT2MIME = new HashMap<String, String>();
+
+ static {
+ EXT2MIME.put("", "application/octet-stream");
+ EXT2MIME.put("ai", "application/postscript");
+ EXT2MIME.put("aif", "audio/x-aiff");
+ EXT2MIME.put("aifc", "audio/x-aiff");
+ EXT2MIME.put("aiff", "audio/x-aiff");
+ EXT2MIME.put("asf", "video/x-ms-asf");
+ EXT2MIME.put("asr", "video/x-ms-asf");
+ EXT2MIME.put("asx", "video/x-ms-asf");
+ EXT2MIME.put("au", "audio/basic");
+ EXT2MIME.put("avi", "video/x-msvideo");
+ EXT2MIME.put("axs", "application/olescript");
+ EXT2MIME.put("bas", "text/plain");
+ EXT2MIME.put("bmp", "image/bmp");
+ EXT2MIME.put("c", "text/plain");
+ EXT2MIME.put("cat", "application/vnd.ms-pkiseccat");
+ EXT2MIME.put("cdf", "application/x-cdf");
+ EXT2MIME.put("cer", "application/x-x509-ca-cert");
+ EXT2MIME.put("clp", "application/x-msclip");
+ EXT2MIME.put("cmx", "image/x-cmx");
+ EXT2MIME.put("cod", "image/cis-cod");
+ EXT2MIME.put("cpio", "application/x-cpio");
+ EXT2MIME.put("crd", "application/x-mscardfile");
+ EXT2MIME.put("crl", "application/pkix-crl");
+ EXT2MIME.put("crt", "application/x-x509-ca-cert");
+ EXT2MIME.put("csh", "application/x-csh");
+ EXT2MIME.put("css", "text/css");
+ EXT2MIME.put("dll", "application/x-msdownload");
+ EXT2MIME.put("doc", "application/msword");
+ EXT2MIME
+ .put("docx",
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
+ EXT2MIME
+ .put("doct",
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.template");
+ EXT2MIME.put("dot", "application/msword");
+ EXT2MIME.put("dvi", "application/x-dvi");
+ EXT2MIME.put("dxr", "application/x-director");
+ EXT2MIME.put("eps", "application/postscript");
+ EXT2MIME.put("etx", "text/x-setext");
+ EXT2MIME.put("evy", "application/envoy");
+ EXT2MIME.put("fif", "application/fractals");
+ EXT2MIME.put("flr", "x-world/x-vrml");
+ EXT2MIME.put("gif", "image/gif");
+ EXT2MIME.put("gtar", "application/x-gtar");
+ EXT2MIME.put("gz", "application/x-gzip");
+ EXT2MIME.put("h", "text/plain");
+ EXT2MIME.put("hdf", "application/x-hdf");
+ EXT2MIME.put("hlp", "application/winhlp");
+ EXT2MIME.put("hqx", "application/mac-binhex40");
+ EXT2MIME.put("hta", "application/hta");
+ EXT2MIME.put("htc", "text/x-component");
+ EXT2MIME.put("htm", "text/html");
+ EXT2MIME.put("html", "text/html");
+ EXT2MIME.put("htt", "text/webviewhtml");
+ EXT2MIME.put("ico", "image/x-icon");
+ EXT2MIME.put("ief", "image/ief");
+ EXT2MIME.put("iii", "application/x-iphone");
+ EXT2MIME.put("isp", "application/x-internet-signup");
+ EXT2MIME.put("jfif", "image/pipeg");
+ EXT2MIME.put("jpe", "image/jpeg");
+ EXT2MIME.put("jpeg", "image/jpeg");
+ EXT2MIME.put("jpg", "image/jpeg");
+ EXT2MIME.put("js", "application/x-javascript");
+ EXT2MIME.put("latex", "application/x-latex");
+ EXT2MIME.put("lsf", "video/x-la-asf");
+ EXT2MIME.put("lsx", "video/x-la-asf");
+ EXT2MIME.put("m3u", "audio/x-mpegurl");
+ EXT2MIME.put("man", "application/x-troff-man");
+ EXT2MIME.put("mdb", "application/x-msaccess");
+ EXT2MIME.put("me", "application/x-troff-me");
+ EXT2MIME.put("mhtv", "message/rfc822");
+ EXT2MIME.put("mhtml", "message/rfc822");
+ EXT2MIME.put("mid", "audio/mid");
+ EXT2MIME.put("mov", "video/quicktime");
+ EXT2MIME.put("movie", "video/x-sgi-movie");
+ EXT2MIME.put("mp2", "video/mpeg");
+ EXT2MIME.put("mp3", "audio/mpeg");
+ EXT2MIME.put("mpa", "video/mpeg");
+ EXT2MIME.put("mpe", "video/mpegv");
+ EXT2MIME.put("mpeg", "video/mpeg");
+ EXT2MIME.put("mpg", "video/mpegv");
+ EXT2MIME.put("mpp", "application/vnd.ms-project");
+ EXT2MIME.put("mpv2", "video/mpeg");
+ EXT2MIME.put("ms", "application/x-troff-ms");
+ EXT2MIME.put("mvb", "application/x-msmediaview");
+ EXT2MIME.put("nws", "message/rfc822");
+ EXT2MIME.put("oda", "application/oda");
+ EXT2MIME.put("p10", "application/pkcs10");
+ EXT2MIME.put("p12", "application/x-pkcs12v");
+ EXT2MIME.put("p7b", "application/x-pkcs7-certificates");
+ EXT2MIME.put("p7c", "application/x-pkcs7-mime");
+ EXT2MIME.put("p7m", "application/x-pkcs7-mime");
+ EXT2MIME.put("p7r", "application/x-pkcs7-certreqresp");
+ EXT2MIME.put("p7s", "application/x-pkcs7-signature");
+ EXT2MIME.put("pbm", "image/x-portable-bitmap");
+ EXT2MIME.put("pdf", "application/pdf");
+ EXT2MIME.put("pfx", "application/x-pkcs12");
+ EXT2MIME.put("pgm", "image/x-portable-graymap");
+ EXT2MIME.put("vpko", "application/ynd.ms-pkipko");
+ EXT2MIME.put("pma", "application/x-perfmon");
+ EXT2MIME.put("pmc", "application/x-perfmon");
+ EXT2MIME.put("pml", "application/x-perfmon");
+ EXT2MIME.put("pmr", "application/x-perfmon");
+ EXT2MIME.put("pmw", "application/x-perfmon");
+ EXT2MIME.put("png", "image/png");
+ EXT2MIME.put("pnm", "image/x-portable-anymap");
+ EXT2MIME.put("pot", "application/vnd.ms-powerpoint");
+ EXT2MIME.put("ppm", "image/x-portable-pixmap");
+ EXT2MIME.put("pps", "application/vnd.ms-powerpoint");
+ EXT2MIME.put("ppt", "application/vnd.ms-powerpoint");
+ EXT2MIME
+ .put("pptx",
+ "application/vnd.openxmlformats-officedocument.presentationml.presentation");
+ EXT2MIME
+ .put("ppsx",
+ "application/vnd.openxmlformats-officedocument.presentationml.slideshow");
+ EXT2MIME
+ .put("potx",
+ "application/vnd.openxmlformats-officedocument.presentationml.template");
+ EXT2MIME.put("prf", "application/pics-rules");
+ EXT2MIME.put("ps", "application/postscript");
+ EXT2MIME.put("pub", "application/x-mspublisher");
+ EXT2MIME.put("qt", "video/quicktime");
+ EXT2MIME.put("ra", "audio/x-pn-realaudio");
+ EXT2MIME.put("ram", "audio/x-pn-realaudio");
+ EXT2MIME.put("ras", "image/x-cmu-raster");
+ EXT2MIME.put("rgb", "image/x-rgb");
+ EXT2MIME.put("rmi", "audio/mid");
+ EXT2MIME.put("roff", "application/x-troff");
+ EXT2MIME.put("rtf", "application/rtf");
+ EXT2MIME.put("rtx", "text/richtext");
+ EXT2MIME.put("scd", "application/x-msschedule");
+ EXT2MIME.put("sct", "text/scriptlet");
+ EXT2MIME.put("sh", "application/x-sh");
+ EXT2MIME.put("shar", "application/x-shar");
+ EXT2MIME.put("sit", "application/x-stuffit");
+ EXT2MIME.put("snd", "audio/basic");
+ EXT2MIME.put("spc", "application/x-pkcs7-certificates");
+ EXT2MIME.put("spl", "application/futuresplash");
+ EXT2MIME.put("src", "application/x-wais-source");
+ EXT2MIME.put("sst", "application/vnd.ms-pkicertstore");
+ EXT2MIME.put("stl", "application/vnd.ms-pkistl");
+ EXT2MIME.put("stm", "text/html");
+ EXT2MIME.put("svg", "image/svg+xml");
+ EXT2MIME.put("swf", "application/x-shockwave-flash");
+ EXT2MIME.put("t", "application/x-troff");
+ EXT2MIME.put("tar", "application/x-tar");
+ EXT2MIME.put("tcl", "application/x-tcl");
+ EXT2MIME.put("tex", "application/x-tex");
+ EXT2MIME.put("texi", "application/x-texinfo");
+ EXT2MIME.put("texinfo", "application/x-texinfo");
+ EXT2MIME.put("tgz", "application/x-compressed");
+ EXT2MIME.put("tif", "image/tiff");
+ EXT2MIME.put("tiff", "image/tiff");
+ EXT2MIME.put("tr", "application/x-troff");
+ EXT2MIME.put("trm", "application/x-msterminal");
+ EXT2MIME.put("tsv", "text/tab-separated-values");
+ EXT2MIME.put("txt", "text/plain");
+ EXT2MIME.put("uls", "text/iuls");
+ EXT2MIME.put("ustar", "application/x-ustar");
+ EXT2MIME.put("vcf", "text/x-vcard");
+ EXT2MIME.put("vrml", "x-world/x-vrml");
+ EXT2MIME.put("wav", "audio/x-wav");
+ EXT2MIME.put("wcm", "application/vnd.ms-works");
+ EXT2MIME.put("wdb", "application/vnd.ms-works");
+ EXT2MIME.put("wmf", "application/x-msmetafile");
+ EXT2MIME.put("wps", "application/vnd.ms-works");
+ EXT2MIME.put("wri", "application/x-mswrite");
+ EXT2MIME.put("wrl", "x-world/x-vrml");
+ EXT2MIME.put("wrz", "x-world/x-vrml");
+ EXT2MIME.put("xaf", "x-world/x-vrml");
+ EXT2MIME.put("xbm", "image/x-xbitmap");
+ EXT2MIME.put("xla", "application/vnd.ms-excel");
+ EXT2MIME.put("xlc", "application/vnd.ms-excel");
+ EXT2MIME.put("xlm", "application/vnd.ms-excel");
+ EXT2MIME.put("xls", "application/vnd.ms-excel");
+ EXT2MIME
+ .put("xlsx",
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+ EXT2MIME.put("xlt", "application/vnd.ms-excel");
+ EXT2MIME
+ .put("xltx",
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.template");
+ EXT2MIME.put("xlw", "application/vnd.ms-excel");
+ EXT2MIME.put("xml", "text/xml");
+ EXT2MIME.put("xof", "x-world/x-vrml");
+ EXT2MIME.put("xpm", "image/x-xpixmap");
+ EXT2MIME.put("xwd", "image/x-xwindowdump");
+ EXT2MIME.put("z", "application/x-compress");
+ EXT2MIME.put("zip", "application/zip");
+ }
+
+ /**
+ * Returns the MIME type for file extension.
+ */
+ public static String getMIMEType(String ext) {
+ if (ext == null) {
+ return EXT2MIME.get("");
+ }
+
+ int x = ext.lastIndexOf('.');
+ if (x > -1) {
+ ext = ext.substring(x + 1);
+ }
+
+ String mime = EXT2MIME.get(ext.toLowerCase());
+ if (mime == null) {
+ mime = EXT2MIME.get("");
+ }
+
+ return mime;
+ }
+
+ /**
+ * Returns the MIME type for a file.
+ */
+ public static String getMIMEType(File file) {
+ if (file == null) {
+ return getMIMEType("");
+ }
+
+ return getMIMEType(file.getName());
+ }
+}
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/MIMETypes.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/ObjectListener.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/ObjectListener.java?rev=1005006&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/ObjectListener.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/ObjectListener.java Wed Oct 6 12:32:23 2010
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.chemistry.opencmis.workbench.model;
+
+import java.util.EventListener;
+
+public interface ObjectListener extends EventListener {
+
+ void objectLoaded(ClientModelEvent event);
+}
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/ObjectListener.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/swing/ActionPanel.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/swing/ActionPanel.java?rev=1005006&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/swing/ActionPanel.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/swing/ActionPanel.java Wed Oct 6 12:32:23 2010
@@ -0,0 +1,153 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.chemistry.opencmis.workbench.swing;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Cursor;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.BorderFactory;
+import javax.swing.BoxLayout;
+import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.JFileChooser;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import javax.swing.UIManager;
+
+import org.apache.chemistry.opencmis.client.api.CmisObject;
+import org.apache.chemistry.opencmis.workbench.ClientHelper;
+import org.apache.chemistry.opencmis.workbench.model.ClientModel;
+
+public abstract class ActionPanel extends JPanel implements ActionListener {
+
+ private static final long serialVersionUID = 1L;
+
+ private ClientModel model;
+ private CmisObject object;
+
+ private JPanel centerPanel;
+
+ public ActionPanel(String title, String buttonLabel, ClientModel model) {
+ super();
+ this.model = model;
+ createGUI(title, buttonLabel);
+ }
+
+ public ClientModel getClientModel() {
+ return model;
+ }
+
+ public void setObject(CmisObject object) {
+ this.object = object;
+ }
+
+ public CmisObject getObject() {
+ return object;
+ }
+
+ protected void createGUI(String title, String buttonLabel) {
+ BorderLayout borderLayout = new BorderLayout();
+ borderLayout.setVgap(3);
+ setLayout(borderLayout);
+
+ setBackground(Color.WHITE);
+ setBorder(BorderFactory.createCompoundBorder(BorderFactory
+ .createEmptyBorder(5, 5, 5, 5), BorderFactory
+ .createCompoundBorder(BorderFactory.createLineBorder(
+ Color.GRAY, 2), BorderFactory.createEmptyBorder(5, 5,
+ 5, 5))));
+
+ Font labelFont = UIManager.getFont("Label.font");
+ Font boldFont = labelFont.deriveFont(Font.BOLD,
+ labelFont.getSize2D() * 1.2f);
+
+ JLabel titleLabel = new JLabel(title);
+ titleLabel.setFont(boldFont);
+ add(titleLabel, BorderLayout.PAGE_START);
+
+ centerPanel = new JPanel();
+ centerPanel.setLayout(new BoxLayout(centerPanel, BoxLayout.PAGE_AXIS));
+ centerPanel.setBackground(Color.WHITE);
+ add(centerPanel, BorderLayout.CENTER);
+
+ createActionComponents();
+
+ JButton deleteButton = new JButton(buttonLabel);
+ deleteButton.addActionListener(this);
+ add(deleteButton, BorderLayout.PAGE_END);
+
+ setMaximumSize(new Dimension(Short.MAX_VALUE, getPreferredSize().height));
+ }
+
+ protected void addActionComponent(JComponent comp) {
+ comp.setAlignmentX(LEFT_ALIGNMENT);
+ centerPanel.add(comp);
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ try {
+ setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
+ doAction();
+ model.reloadFolder();
+ } catch (Exception ex) {
+ ClientHelper.showError(null, ex);
+ } finally {
+ setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
+ }
+ }
+
+ protected abstract void createActionComponents();
+
+ public abstract boolean isAllowed();
+
+ public abstract void doAction() throws Exception;
+
+ protected JPanel createFilenamePanel(final JTextField filenameField) {
+ JPanel filePanel = new JPanel(new BorderLayout());
+ filePanel.setBackground(Color.WHITE);
+
+ filePanel.add(new JLabel("File:"), BorderLayout.LINE_START);
+
+ filePanel.add(filenameField, BorderLayout.CENTER);
+
+ JButton browseButton = new JButton("Browse");
+ browseButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ JFileChooser fileChooser = new JFileChooser();
+ int chooseResult = fileChooser.showDialog(filenameField,
+ "Select");
+ if (chooseResult == JFileChooser.APPROVE_OPTION) {
+ if (fileChooser.getSelectedFile().isFile()) {
+ filenameField.setText(fileChooser.getSelectedFile()
+ .getAbsolutePath());
+ }
+ }
+ }
+ });
+ filePanel.add(browseButton, BorderLayout.LINE_END);
+
+ return filePanel;
+ }
+}
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/swing/ActionPanel.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/swing/CollectionRenderer.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/swing/CollectionRenderer.java?rev=1005006&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/swing/CollectionRenderer.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/swing/CollectionRenderer.java Wed Oct 6 12:32:23 2010
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.chemistry.opencmis.workbench.swing;
+
+import java.awt.Component;
+import java.util.Collection;
+import java.util.GregorianCalendar;
+
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableCellRenderer;
+
+import org.apache.chemistry.opencmis.commons.definitions.Choice;
+import org.apache.chemistry.opencmis.workbench.ClientHelper;
+
+public class CollectionRenderer extends DefaultTableCellRenderer {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
+ int row, int column) {
+ Component comp = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
+
+ int height = (int) getPreferredSize().getHeight();
+ if (height > (getFontMetrics(getFont()).getHeight() + getInsets().bottom + getInsets().top)) {
+ if (table.getRowHeight(row) != height) {
+ table.setRowHeight(row, height);
+ }
+ }
+
+ return comp;
+ }
+
+ @Override
+ protected void setValue(Object value) {
+ Collection<?> col = (Collection<?>) value;
+
+ if ((col == null) || (col.isEmpty())) {
+ super.setValue("");
+ return;
+ }
+
+ // build string
+ StringBuilder sb = new StringBuilder("<html>");
+ if (col != null) {
+ for (Object o : col) {
+ if (o == null) {
+ sb.append("<i>null</i>");
+ } else if (o instanceof GregorianCalendar) {
+ sb.append(ClientHelper.getDateString((GregorianCalendar) o));
+ } else if (o instanceof Choice<?>) {
+ sb.append(((Choice<?>) o).getValue());
+ } else {
+ sb.append(o.toString());
+ }
+ sb.append("<br/>");
+ }
+ }
+ sb.append("</html>");
+
+ super.setValue(sb.toString());
+ }
+}
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/swing/CollectionRenderer.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/swing/CreateDialog.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/swing/CreateDialog.java?rev=1005006&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/swing/CreateDialog.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/swing/CreateDialog.java Wed Oct 6 12:32:23 2010
@@ -0,0 +1,108 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.chemistry.opencmis.workbench.swing;
+
+import java.awt.BorderLayout;
+import java.awt.Frame;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.util.List;
+
+import javax.swing.BorderFactory;
+import javax.swing.JComponent;
+import javax.swing.JDialog;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+import org.apache.chemistry.opencmis.client.api.ObjectType;
+import org.apache.chemistry.opencmis.workbench.model.ClientModel;
+
+public abstract class CreateDialog extends JDialog {
+
+ private static final long serialVersionUID = 1L;
+
+ private ClientModel model;
+ private JPanel panel;
+
+ public CreateDialog(Frame owner, String title, ClientModel model) {
+ super(owner, title, true);
+ this.model = model;
+
+ setLayout(new BorderLayout());
+ panel = new JPanel(new GridBagLayout());
+ panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
+ add(panel, BorderLayout.CENTER);
+ }
+
+ protected ClientModel getClientModel() {
+ return model;
+ }
+
+ protected void createRow(String label, JComponent comp, int row) {
+ JLabel textLabel = new JLabel(label);
+ textLabel.setLabelFor(comp);
+
+ GridBagConstraints c = new GridBagConstraints();
+ c.anchor = GridBagConstraints.LINE_START;
+ c.fill = GridBagConstraints.HORIZONTAL;
+ c.gridx = 0;
+ c.gridy = row;
+ panel.add(textLabel, c);
+ c.gridx = 1;
+ panel.add(comp, c);
+ }
+
+ public void showDialog() {
+ panel.invalidate();
+
+ setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
+ pack();
+ setLocationRelativeTo(null);
+ setVisible(true);
+ }
+
+ protected Object[] getTypes(String rootTypeId) {
+ List<ObjectType> types = model.getCreateableTypes(rootTypeId);
+
+ Object[] result = new Object[types.size()];
+
+ int i = 0;
+ for (final ObjectType type : types) {
+ result[i] = new ObjectTypeItem() {
+ public ObjectType getObjectType() {
+ return type;
+ }
+
+ @Override
+ public String toString() {
+ return type.getDisplayName() + " (" + type.getId() + ")";
+ }
+ };
+
+ i++;
+ }
+
+ return result;
+ }
+
+ public static interface ObjectTypeItem {
+ ObjectType getObjectType();
+ }
+}
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/swing/CreateDialog.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/swing/GregorianCalendarRenderer.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/swing/GregorianCalendarRenderer.java?rev=1005006&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/swing/GregorianCalendarRenderer.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/swing/GregorianCalendarRenderer.java Wed Oct 6 12:32:23 2010
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.chemistry.opencmis.workbench.swing;
+
+import java.util.GregorianCalendar;
+
+import javax.swing.table.DefaultTableCellRenderer;
+
+import org.apache.chemistry.opencmis.workbench.ClientHelper;
+
+public class GregorianCalendarRenderer extends DefaultTableCellRenderer {
+ private static final long serialVersionUID = 1L;
+
+ public GregorianCalendarRenderer() {
+ super();
+ }
+
+ public void setValue(Object value) {
+ setText(ClientHelper.getDateString((GregorianCalendar) value));
+ }
+}
\ No newline at end of file
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/swing/GregorianCalendarRenderer.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/swing/InfoPanel.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/swing/InfoPanel.java?rev=1005006&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/swing/InfoPanel.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/swing/InfoPanel.java Wed Oct 6 12:32:23 2010
@@ -0,0 +1,130 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.chemistry.opencmis.workbench.swing;
+
+import java.awt.Color;
+import java.awt.FlowLayout;
+import java.awt.Font;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+
+import javax.swing.BorderFactory;
+import javax.swing.JCheckBox;
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import javax.swing.UIManager;
+
+public abstract class InfoPanel extends JPanel {
+
+ private static final long serialVersionUID = 1L;
+
+ private JPanel gridPanel;
+ private GridBagConstraints gbc;
+ private Font boldFont;
+
+ protected void setupGUI() {
+ setLayout(new FlowLayout(FlowLayout.LEFT));
+ setBackground(Color.WHITE);
+
+ gridPanel = new JPanel(new GridBagLayout());
+ gridPanel.setBackground(Color.WHITE);
+ add(gridPanel);
+
+ gbc = new GridBagConstraints();
+
+ gbc.fill = GridBagConstraints.BOTH;
+ gbc.gridy = 0;
+ gbc.insets = new Insets(3, 3, 3, 3);
+
+ Font labelFont = UIManager.getFont("Label.font");
+ boldFont = labelFont
+ .deriveFont(Font.BOLD, labelFont.getSize2D() * 1.2f);
+ }
+
+ protected JTextField addLine(String label) {
+ return addLine(label, false);
+ }
+
+ protected JTextField addLine(String label, boolean bold) {
+ JTextField textField = new JTextField();
+ textField.setEditable(false);
+ textField.setBorder(BorderFactory.createEmptyBorder());
+ if (bold) {
+ textField.setFont(boldFont);
+ }
+
+ JLabel textLable = new JLabel(label);
+ textLable.setLabelFor(textField);
+ if (bold) {
+ textLable.setFont(boldFont);
+ }
+
+ gbc.gridy++;
+
+ gbc.gridx = 0;
+ gbc.anchor = GridBagConstraints.BASELINE_TRAILING;
+ gridPanel.add(textLable, gbc);
+
+ gbc.gridx = 1;
+ gbc.anchor = GridBagConstraints.BASELINE_LEADING;
+ gridPanel.add(textField, gbc);
+
+ return textField;
+ }
+
+ protected JCheckBox addCheckBox(String label) {
+ JCheckBox checkBox = new JCheckBox();
+ checkBox.setEnabled(false);
+
+ JLabel textLable = new JLabel(label);
+ textLable.setLabelFor(checkBox);
+
+ gbc.gridy++;
+
+ gbc.gridx = 0;
+ gbc.anchor = GridBagConstraints.BASELINE_TRAILING;
+ gridPanel.add(textLable, gbc);
+
+ gbc.gridx = 1;
+ gbc.anchor = GridBagConstraints.BASELINE_LEADING;
+ gridPanel.add(checkBox, gbc);
+
+ return checkBox;
+ }
+
+ protected <T extends JComponent> T addComponent(String label, T comp) {
+ JLabel textLable = new JLabel(label);
+ textLable.setLabelFor(comp);
+
+ gbc.gridy++;
+
+ gbc.gridx = 0;
+ gbc.anchor = GridBagConstraints.BASELINE_TRAILING;
+ gridPanel.add(textLable, gbc);
+
+ gbc.gridx = 1;
+ gbc.anchor = GridBagConstraints.BASELINE_LEADING;
+ gridPanel.add(comp, gbc);
+
+ return comp;
+ }
+}
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/swing/InfoPanel.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/jnlp/template.vm
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/jnlp/template.vm?rev=1005006&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/jnlp/template.vm (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/jnlp/template.vm Wed Oct 6 12:32:23 2010
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<jnlp spec="1.5+" codebase="!server!">
+ <information>
+ <title>$project.Name</title>
+ <vendor>$project.Organization.Name</vendor>
+ <homepage href="http://incubator.apache.org/chemistry/opencmis.html"/>
+ <description>$project.Description</description>
+ <offline-allowed/>
+ <update check="timeout" policy="prompt-update"/>
+ </information>
+ <security>
+ <all-permissions/>
+ </security>
+ <resources>
+ <j2se version="1.6+" initial-heap-size="64m" max-heap-size="256m"/>
+ $dependencies
+ <property name="cmis.workbench.url" value="!repository!"/>
+ <property name="cmis.workbench.user" value="!user!"/>
+ <property name="cmis.workbench.password" value="!password!"/>
+ <property name="cmis.workbench.binding" value="!binding!"/>
+ </resources>
+ <application-desc main-class="$mainClass"/>
+</jnlp>
+
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/jnlp/template.vm
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/META-INF/README
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/META-INF/README?rev=1005006&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/META-INF/README (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/META-INF/README Wed Oct 6 12:32:23 2010
@@ -0,0 +1,47 @@
+CMIS Workbench
+
+This is a simple Content Management Interoperability Services (CMIS) client based on Swing and
+Apache Chemistry OpenCMIS (http://incubator.apache.org/chemistry/opencmis.html).
+
+This CMIS client is distributed under the Apache License, version 2.0.
+Please see the NOTICE and LICENSE files for details.
+
+
+
+System properties reference
+---------------------------
+
+Login dialog:
+
+cmis.workbench.url - preset URL
+cmis.workbench.user - preset user name
+cmis.workbench.password - preset password
+cmis.workbench.binding - preset binding (atompub/webservices)
+cmis.workbench.authentication - preset authentication method (none/standard/ntlm)
+
+
+Folder operation context:
+
+cmis.workbench.folder.filter
+cmis.workbench.folder.includeAcls
+cmis.workbench.folder.includeAllowableActions
+cmis.workbench.folder.includePolicies
+cmis.workbench.folder.includeRelationships
+cmis.workbench.folder.renditionFilter
+cmis.workbench.folder.orderBy
+cmis.workbench.folder.maxItemsPerPage
+
+
+Object operation context:
+
+cmis.workbench.object.filter
+cmis.workbench.object.includeAcls
+cmis.workbench.object.includeAllowableActions
+cmis.workbench.object.includePolicies
+cmis.workbench.object.includeRelationships
+cmis.workbench.object.renditionFilter
+
+
+Others:
+
+cmis.workbench.acceptSelfSignedCertificates - disable SSL certificate check (true/false)
\ No newline at end of file
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/META-INF/README
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/changelog.png
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/changelog.png?rev=1005006&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/changelog.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/connect.png
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/connect.png?rev=1005006&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/connect.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/console.png
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/console.png?rev=1005006&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/console.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/document.png
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/document.png?rev=1005006&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/document.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/folder.png
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/folder.png?rev=1005006&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/folder.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/icon.png
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/icon.png?rev=1005006&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/icon.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/info.png
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/info.png?rev=1005006&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/info.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/log.png
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/log.png?rev=1005006&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/log.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/newdocument.png
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/newdocument.png?rev=1005006&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/newdocument.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/newfolder.png
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/newfolder.png?rev=1005006&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/newfolder.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/policy.png
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/policy.png?rev=1005006&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/policy.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/query.png
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/query.png?rev=1005006&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/query.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/relationship.png
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/relationship.png?rev=1005006&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/relationship.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/repository-info.png
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/repository-info.png?rev=1005006&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/repository-info.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/types.png
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/types.png?rev=1005006&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/types.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/log4j.properties
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/log4j.properties?rev=1005006&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/log4j.properties (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/log4j.properties Wed Oct 6 12:32:23 2010
@@ -0,0 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+log4j.rootLogger=info, logframe
+
+log4j.appender.logframe = org.apache.chemistry.opencmis.workbench.ClientWriterAppender
+log4j.appender.logframe.layout = org.apache.log4j.EnhancedPatternLayout
+log4j.appender.logframe.layout.ConversionPattern = > %d{HH:mm:ss} %5.5p %40.40c: %m%n%throwable{15}
\ No newline at end of file
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/log4j.properties
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/CMIS.groovy
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/CMIS.groovy?rev=1005006&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/CMIS.groovy (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/CMIS.groovy Wed Oct 6 12:32:23 2010
@@ -0,0 +1,148 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package scripts
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+
+import org.apache.chemistry.opencmis.commons.*
+import org.apache.chemistry.opencmis.commons.data.*
+import org.apache.chemistry.opencmis.commons.enums.*
+import org.apache.chemistry.opencmis.commons.impl.dataobjects.ContentStreamImpl;
+import org.apache.chemistry.opencmis.client.api.*
+
+class CMIS {
+
+ Session session
+
+ CMIS(Session session) {
+ this.session = session
+ }
+
+ CmisObject getObject(id) {
+ CmisObject result = null
+
+ if(id instanceof CmisObject) {
+ result = id
+ } else if(id instanceof ObjectId) {
+ result = session.getObject(id)
+ } else if(id instanceof String) {
+ if(id.startsWith("/")) {
+ result = session.getObjectByPath(id)
+ } else {
+ result = session.getObject(session.createObjectId(id))
+ }
+ }
+
+ if(result == null) {
+ throw new Exception("Object not found!")
+ }
+
+ return result
+ }
+
+ Folder getFolder(id) {
+ CmisObject folder = getObject(id)
+ if(!(folder instanceof Folder)) {
+ throw new Exception("Object is not a folder!")
+ }
+
+ return folder
+ }
+
+ Document getDocument(id) {
+ CmisObject doc = getObject(id)
+ if(!(doc instanceof Document)) {
+ throw new Exception("Object is not a document!")
+ }
+
+ return doc
+ }
+
+ void printProperties(id) {
+ CmisObject object = getObject(id)
+
+ for(Property prop: object.getProperties()) {
+ printProperty(prop)
+ }
+ }
+
+ void printProperty(Property prop) {
+ println prop.getId() + ": " + prop.getValuesAsString()
+ }
+
+ void download(id, destination) {
+ Document doc = getDocument(id)
+
+ def file = new FileOutputStream(destination)
+ def out = new BufferedOutputStream(file)
+ out << doc.contentStream.stream
+ out.close()
+ }
+
+ Folder createFolder(parent, String name, String type = "cmis:folder") {
+ CmisObject parentFolder = getFolder(parent)
+
+ def properties = [
+ (PropertyIds.OBJECT_TYPE_ID): type,
+ (PropertyIds.NAME): name
+ ]
+
+ return parentFolder.createFolder(properties, session.getDefaultContext())
+ }
+
+ Document createTextDocument(parent, String name, String content, String type = "cmis:document",
+ VersioningState versioningState = VersioningState.MAJOR) {
+ CmisObject parentFolder = getFolder(parent)
+
+ def properties = [
+ (PropertyIds.OBJECT_TYPE_ID): type,
+ (PropertyIds.NAME): name
+ ]
+
+ def stream = new ByteArrayInputStream(content.bytes)
+ def contentStream = new ContentStreamImpl(name, content.bytes.length, "text/plain", stream)
+
+ return parentFolder.createDocument(properties, contentStream,
+ versioningState, session.getDefaultContext())
+ }
+
+ Document createDocumentFromFile(parent, File file, String type = "cmis:document",
+ VersioningState versioningState = VersioningState.MAJOR) {
+ CmisObject parentFolder = getFolder(parent)
+
+ def name = file.getName()
+ def mimetype = org.apache.chemistry.opencmis.workbench.model.MIMETypes.getMIMEType(file)
+
+ def properties = [
+ (PropertyIds.OBJECT_TYPE_ID): type,
+ (PropertyIds.NAME): name
+ ]
+
+ def contentStream = new ContentStreamImpl(name, file.size(), mimetype, new FileInputStream(file))
+
+ return parentFolder.createDocument(properties, contentStream,
+ versioningState, session.getDefaultContext())
+ }
+
+ void delete(id) {
+ getObject(id).delete(true)
+ }
+}
\ No newline at end of file
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/counttypes.groovy
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/counttypes.groovy?rev=1005006&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/counttypes.groovy (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/counttypes.groovy Wed Oct 6 12:32:23 2010
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import org.apache.chemistry.opencmis.commons.*
+import org.apache.chemistry.opencmis.commons.data.*
+import org.apache.chemistry.opencmis.commons.enums.*
+import org.apache.chemistry.opencmis.commons.exceptions.*
+import org.apache.chemistry.opencmis.client.api.*
+
+println "'cmis:document' and subtypes: " + countTypes("cmis:document")
+println "'cmis:folder' and subtypes: " + countTypes("cmis:folder")
+println "'cmis:relationship' and subtypes: " + countTypes("cmis:relationship")
+println "'cmis:policy' and subtypes: " + countTypes("cmis:policy")
+
+
+
+int countTypes(String typeId) {
+ def counter = 0
+
+ try {
+ session.getTypeDescendants(typeId, -1, false).each { counter += 1 + count(it) }
+ }
+ catch(CmisBaseException e) { }
+
+ return counter
+}
+
+int count(Tree tree) {
+ def counter = 0
+ tree.children.each { counter += 1 + count(it) }
+
+ return counter
+}
\ No newline at end of file
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/getdescendants.groovy
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/getdescendants.groovy?rev=1005006&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/getdescendants.groovy (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/getdescendants.groovy Wed Oct 6 12:32:23 2010
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import org.apache.chemistry.opencmis.client.api.*
+
+session.rootFolder.getDescendants(-1).each {
+ printTree(it, 0)
+}
+
+def printTree(Tree tree, int depth) {
+ for(i in 0..depth) { print " " }
+
+ println tree.item.name
+
+ if(tree.children.size > 0) {
+ tree.children.each {
+ printTree(it, depth + 1)
+ }
+ }
+}
\ No newline at end of file
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/query.groovy
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/query.groovy?rev=1005006&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/query.groovy (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/query.groovy Wed Oct 6 12:32:23 2010
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import org.apache.chemistry.opencmis.commons.*
+import org.apache.chemistry.opencmis.commons.data.*
+import org.apache.chemistry.opencmis.commons.enums.*
+import org.apache.chemistry.opencmis.client.api.*
+
+String cql = "SELECT cmis:objectId, cmis:name, cmis:contentStreamLength FROM cmis:document"
+
+ItemIterable<QueryResult> results = session.query(cql, false)
+
+//ItemIterable<QueryResult> results = session.query(cql, false).getPage(10)
+//ItemIterable<QueryResult> results = session.query(cql, false).skipTo(10).getPage(10)
+
+results.each { hit ->
+ hit.properties.each { println "${it.queryName}: ${it.firstValue}" }
+ println "--------------------------------------"
+}
+
+println "--------------------------------------"
+println "Total number: ${results.totalNumItems}"
+println "Has more: ${results.hasMoreItems}"
+println "--------------------------------------"
\ No newline at end of file
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/script-library.properties
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/script-library.properties?rev=1005006&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/script-library.properties (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/script-library.properties Wed Oct 6 12:32:23 2010
@@ -0,0 +1,33 @@
+#
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+#
+
+#
+# Add more scripts here.
+# key = script file, value = title
+#
+
+startup.groovy = - Demo -
+template.groovy = - Basic template -
+
+getdescendants.groovy = Print descendants tree
+query.groovy = Execute a query
+counttypes.groovy = Count types and sub types
+upload.groovy = Upload a local folder to the repository
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/script-library.properties
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/startup.groovy
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/startup.groovy?rev=1005006&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/startup.groovy (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/startup.groovy Wed Oct 6 12:32:23 2010
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import org.apache.chemistry.opencmis.commons.*
+import org.apache.chemistry.opencmis.commons.data.*
+import org.apache.chemistry.opencmis.commons.enums.*
+import org.apache.chemistry.opencmis.client.api.*
+
+// variable 'session' is bound to the current OpenCMIS session
+
+// print the repository name - Java style
+println "Repository: " + session.getRepositoryInfo().getName()
+
+// print the repository name - Groovy style
+println "Repository: " + session.repositoryInfo.name
+
+
+// get root folder
+Folder root = session.getRootFolder()
+println "--- Root Folder: " + root.getName() + " ---"
+
+// print root folder children
+for(CmisObject object: root.getChildren()) {
+ println object.getName() + " \t(" + object.getType().getId() + ")"
+}
+
+// run a quick query
+for(QueryResult hit: session.query("SELECT * FROM cmis:document", false)) {
+ hit.properties.each{ println it.queryName + ": " + it.firstValue }
+ println "----------------------------------"
+ }
+
+// CMIS helper script
+def cmis = new scripts.CMIS(session)
+
+cmis.printProperties "/" // access by path
+cmis.printProperties session.rootFolder.id // access by id
+cmis.printProperties session.rootFolder // access by object
+
+// Folder folder = cmis.createFolder("/", "test-folder", "cmis:folder")
+
+// Document doc = cmis.createTextDocument(folder, "test.txt", "Hello World!", "cmis:document")
+// cmis.printProperties doc
+// cmis.download(doc, "/some/path/helloWorld.txt")
+// cmis.delete doc.id
+
+// cmis.delete folder
+
+
+// see /scripts/CMIS.groovy for more methods
\ No newline at end of file
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/template.groovy
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/template.groovy?rev=1005006&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/template.groovy (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/template.groovy Wed Oct 6 12:32:23 2010
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import org.apache.chemistry.opencmis.commons.*
+import org.apache.chemistry.opencmis.commons.data.*
+import org.apache.chemistry.opencmis.commons.enums.*
+import org.apache.chemistry.opencmis.client.api.*
+
+// def cmis = new scripts.CMIS(session)
+// println session.repositoryInfo.name
\ No newline at end of file
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/upload.groovy
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/upload.groovy?rev=1005006&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/upload.groovy (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/scripts/upload.groovy Wed Oct 6 12:32:23 2010
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import org.apache.chemistry.opencmis.commons.*
+import org.apache.chemistry.opencmis.commons.data.*
+import org.apache.chemistry.opencmis.commons.enums.*
+import org.apache.chemistry.opencmis.client.api.*
+
+CMIS cmis = new scripts.CMIS(session)
+
+// destination folder
+Folder destFolder = cmis.getFolder("/")
+
+// source folder
+String localPath = "/some/local/folder"
+
+// upload folder tree
+upload(destFolder, localPath)
+
+
+//--------------------------------------------------
+
+def upload(destination, String localPath,
+String folderType = "cmis:folder",
+String documentType = "cmis:document",
+VersioningState versioningState = VersioningState.MAJOR) {
+
+ println "Uploading...\n"
+ doUpload(destination, new File(localPath), folderType, documentType, versioningState)
+ println "\n...done."
+}
+
+def doUpload(Folder parent, File folder, String folderType, String documentType, VersioningState versioningState) {
+ folder.eachFile {
+ println it.getName()
+
+ if(it.isFile()) {
+ cmis.createDocumentFromFile(parent, it, documentType, versioningState)
+ }
+ else if(it.isDirectory()) {
+ Folder newFolder = cmis.createFolder(parent, it.getName(), folderType)
+ doUpload(newFolder, it, folderType, documentType, versioningState)
+ }
+ }
+}