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/02 22:47:57 UTC
svn commit: r1003880 - in
/incubator/chemistry/opencmis-swingclient/trunk/src/main:
java/org/apache/chemistry/opencmis/swingclient/
java/org/apache/chemistry/opencmis/swingclient/model/
java/org/apache/chemistry/opencmis/swingclient/swing/ resources/im...
Author: fmui
Date: Sat Oct 2 20:47:57 2010
New Revision: 1003880
URL: http://svn.apache.org/viewvc?rev=1003880&view=rev
Log:
- added change log frame
- added upload script
Added:
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/ChangeLogFrame.java (with props)
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/swing/GregorianCalendarRenderer.java (with props)
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/changelog.png (with props)
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/scripts/upload.groovy
Modified:
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/ClientFrame.java
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/FolderTable.java
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/QueryFrame.java
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/RepositoryInfoFrame.java
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/TypesFrame.java
incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/model/ClientModel.java
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/scripts/CMIS.groovy
incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/scripts/script-library.properties
Added: incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/ChangeLogFrame.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/ChangeLogFrame.java?rev=1003880&view=auto
==============================================================================
--- incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/ChangeLogFrame.java (added)
+++ incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/ChangeLogFrame.java Sat Oct 2 20:47:57 2010
@@ -0,0 +1,207 @@
+/*
+ * 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.swingclient;
+
+import java.awt.BorderLayout;
+import java.awt.Cursor;
+import java.awt.Dimension;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.Collection;
+import java.util.GregorianCalendar;
+import java.util.List;
+
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.JTextField;
+import javax.swing.table.AbstractTableModel;
+import javax.swing.table.TableColumn;
+
+import org.apache.chemistry.opencmis.client.api.ChangeEvent;
+import org.apache.chemistry.opencmis.client.api.ChangeEvents;
+import org.apache.chemistry.opencmis.swingclient.model.ClientModel;
+import org.apache.chemistry.opencmis.swingclient.swing.CollectionRenderer;
+import org.apache.chemistry.opencmis.swingclient.swing.GregorianCalendarRenderer;
+
+public class ChangeLogFrame extends JFrame {
+
+ private static final long serialVersionUID = 1L;
+
+ private static final String WINDOW_TITLE = "CMIS Change Log";
+
+ private ClientModel model;
+
+ private JTextField changeLogTokenField;
+ private ChangeLogTable changeLogTable;
+
+ public ChangeLogFrame(ClientModel model) {
+ super();
+
+ this.model = model;
+ createGUI();
+ }
+
+ private void createGUI() {
+ setTitle(WINDOW_TITLE + " - " + model.getRepositoryName());
+ setPreferredSize(new Dimension(700, 700));
+ setMinimumSize(new Dimension(200, 60));
+
+ setLayout(new BorderLayout());
+
+ JPanel inputPanel = new JPanel(new BorderLayout());
+
+ inputPanel.add(new JLabel("Change Log Token:"), BorderLayout.LINE_START);
+
+ changeLogTokenField = new JTextField();
+ inputPanel.add(changeLogTokenField, BorderLayout.CENTER);
+
+ JButton loadButton = new JButton("Load");
+ loadButton.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+
+ String changeLogToken = changeLogTokenField.getText();
+ if (changeLogToken.trim().length() == 0) {
+ changeLogToken = null;
+ }
+
+ ChangeEvents events = null;
+ try {
+ setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
+ events = model.getClientSession().getSession().getContentChanges(changeLogToken, true, 1000);
+ } catch (Exception ex) {
+ ClientHelper.showError(null, ex);
+ return;
+ } finally {
+ setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
+ }
+
+ changeLogTable.setChangeEvents(events.getChangeEvents());
+ changeLogTokenField.setText(events.getlatestChangeLogToken() == null ? "" : events
+ .getlatestChangeLogToken());
+ }
+ });
+ inputPanel.add(loadButton, BorderLayout.LINE_END);
+
+ add(inputPanel, BorderLayout.PAGE_START);
+
+ changeLogTable = new ChangeLogTable();
+ add(new JScrollPane(changeLogTable), BorderLayout.CENTER);
+
+ setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
+ pack();
+
+ setLocationRelativeTo(null);
+ setVisible(true);
+ }
+
+ static class ChangeLogTable extends JTable {
+
+ private static final long serialVersionUID = 1L;
+
+ private static final String[] COLUMN_NAMES = { "Change Type", "Object Id", "Change Time", "Properties" };
+ private static final int[] COLUMN_WIDTHS = { 100, 200, 200, 400 };
+
+ private List<ChangeEvent> changeEvents;
+
+ public ChangeLogTable() {
+ setDefaultRenderer(GregorianCalendar.class, new GregorianCalendarRenderer());
+ setDefaultRenderer(Collection.class, new CollectionRenderer());
+ setModel(new ChangeLogTableModel(this));
+
+ setAutoResizeMode(AUTO_RESIZE_OFF);
+ setAutoCreateRowSorter(true);
+
+ for (int i = 0; i < COLUMN_WIDTHS.length; i++) {
+ TableColumn column = getColumnModel().getColumn(i);
+ column.setPreferredWidth(COLUMN_WIDTHS[i]);
+ }
+
+ setFillsViewportHeight(true);
+ }
+
+ public void setChangeEvents(List<ChangeEvent> changeEvents) {
+ this.changeEvents = changeEvents;
+ ((AbstractTableModel) getModel()).fireTableDataChanged();
+ }
+
+ public List<ChangeEvent> getChangeEvents() {
+ return changeEvents;
+ }
+
+ static class ChangeLogTableModel extends AbstractTableModel {
+
+ private static final long serialVersionUID = 1L;
+
+ private ChangeLogTable table;
+
+ public ChangeLogTableModel(ChangeLogTable table) {
+ this.table = table;
+ }
+
+ public String getColumnName(int columnIndex) {
+ return COLUMN_NAMES[columnIndex];
+ }
+
+ public int getColumnCount() {
+ return COLUMN_NAMES.length;
+ }
+
+ public int getRowCount() {
+ if (table.getChangeEvents() == null) {
+ return 0;
+ }
+
+ return table.getChangeEvents().size();
+ }
+
+ public Object getValueAt(int rowIndex, int columnIndex) {
+ ChangeEvent event = table.getChangeEvents().get(rowIndex);
+
+ switch (columnIndex) {
+ case 0:
+ return (event.getChangeType() == null ? "?" : event.getChangeType().value());
+ case 1:
+ return (event.getObjectId() == null ? "?" : event.getObjectId());
+ case 2:
+ return event.getChangeTime();
+ case 3:
+ return event.getProperties().entrySet();
+ }
+
+ return null;
+ }
+
+ @Override
+ public Class<?> getColumnClass(int columnIndex) {
+ if (columnIndex == 2) {
+ return GregorianCalendar.class;
+ } else if (columnIndex == 3) {
+ return Collection.class;
+ }
+
+ return super.getColumnClass(columnIndex);
+ }
+ }
+ }
+}
Propchange: incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/ChangeLogFrame.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/ClientFrame.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/ClientFrame.java?rev=1003880&r1=1003879&r2=1003880&view=diff
==============================================================================
--- incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/ClientFrame.java (original)
+++ incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/ClientFrame.java Sat Oct 2 20:47:57 2010
@@ -58,9 +58,10 @@ public class ClientFrame extends JFrame
private static final int BUTTON_REPOSITORY_INFO = 1;
private static final int BUTTON_TYPES = 2;
private static final int BUTTON_QUERY = 3;
- private static final int BUTTON_CONSOLE = 4;
- private static final int BUTTON_CREATE_DOCUMENT = 5;
- private static final int BUTTON_CREATE_FOLDER = 6;
+ private static final int BUTTON_CHANGELOG = 4;
+ private static final int BUTTON_CONSOLE = 5;
+ private static final int BUTTON_CREATE_DOCUMENT = 6;
+ private static final int BUTTON_CREATE_FOLDER = 7;
private static final int BUTTON_LOG = 8;
private static final int BUTTON_INFO = 9;
@@ -153,6 +154,16 @@ public class ClientFrame extends JFrame
toolBar.add(toolbarButton[BUTTON_QUERY]);
+ toolbarButton[BUTTON_CHANGELOG] = new JButton("Change Log", ClientHelper.getIcon("changelog.png"));
+ toolbarButton[BUTTON_CHANGELOG].setEnabled(false);
+ toolbarButton[BUTTON_CHANGELOG].addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ new ChangeLogFrame(model);
+ }
+ });
+
+ toolBar.add(toolbarButton[BUTTON_CHANGELOG]);
+
toolbarButton[BUTTON_CONSOLE] = new JButton("Console", ClientHelper.getIcon("console.png"));
toolbarButton[BUTTON_CONSOLE].setEnabled(false);
toolbarButton[BUTTON_CONSOLE].addActionListener(new ActionListener() {
@@ -252,6 +263,7 @@ public class ClientFrame extends JFrame
toolbarButton[BUTTON_REPOSITORY_INFO].setEnabled(true);
toolbarButton[BUTTON_TYPES].setEnabled(true);
toolbarButton[BUTTON_QUERY].setEnabled(model.supportsQuery());
+ toolbarButton[BUTTON_CHANGELOG].setEnabled(model.supportsChangeLog());
toolbarButton[BUTTON_CONSOLE].setEnabled(true);
toolbarButton[BUTTON_CREATE_DOCUMENT].setEnabled(true);
toolbarButton[BUTTON_CREATE_FOLDER].setEnabled(true);
@@ -261,6 +273,7 @@ public class ClientFrame extends JFrame
toolbarButton[BUTTON_REPOSITORY_INFO].setEnabled(false);
toolbarButton[BUTTON_TYPES].setEnabled(false);
toolbarButton[BUTTON_QUERY].setEnabled(false);
+ toolbarButton[BUTTON_CHANGELOG].setEnabled(false);
toolbarButton[BUTTON_CONSOLE].setEnabled(false);
toolbarButton[BUTTON_CREATE_DOCUMENT].setEnabled(false);
toolbarButton[BUTTON_CREATE_FOLDER].setEnabled(false);
@@ -281,7 +294,7 @@ public class ClientFrame extends JFrame
Console console = new Console(this.getClass().getClassLoader());
console.setVariable("session", model.getClientSession().getSession());
console.setVariable("binding", model.getClientSession().getSession().getBinding());
-
+
console.run();
console.getInputArea().setText(readScript(path));
Modified: incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/FolderTable.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/FolderTable.java?rev=1003880&r1=1003879&r2=1003880&view=diff
==============================================================================
--- incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/FolderTable.java (original)
+++ incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/FolderTable.java Sat Oct 2 20:47:57 2010
@@ -43,7 +43,6 @@ import javax.swing.TransferHandler;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.AbstractTableModel;
-import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableColumn;
import org.apache.chemistry.opencmis.client.api.CmisObject;
@@ -53,6 +52,7 @@ import org.apache.chemistry.opencmis.com
import org.apache.chemistry.opencmis.swingclient.model.ClientModel;
import org.apache.chemistry.opencmis.swingclient.model.ClientModelEvent;
import org.apache.chemistry.opencmis.swingclient.model.FolderListener;
+import org.apache.chemistry.opencmis.swingclient.swing.GregorianCalendarRenderer;
public class FolderTable extends JTable implements FolderListener {
@@ -245,18 +245,6 @@ public class FolderTable extends JTable
}
}
- class GregorianCalendarRenderer extends DefaultTableCellRenderer {
- private static final long serialVersionUID = 1L;
-
- public GregorianCalendarRenderer() {
- super();
- }
-
- public void setValue(Object value) {
- setText(ClientHelper.getDateString((GregorianCalendar) value));
- }
- }
-
class FolderTransferHandler extends TransferHandler {
private static final long serialVersionUID = 1L;
Modified: incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/QueryFrame.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/QueryFrame.java?rev=1003880&r1=1003879&r2=1003880&view=diff
==============================================================================
--- incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/QueryFrame.java (original)
+++ incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/QueryFrame.java Sat Oct 2 20:47:57 2010
@@ -79,7 +79,7 @@ public class QueryFrame extends JFrame {
private void createGUI() {
setTitle(WINDOW_TITLE + " - " + model.getRepositoryName());
- setPreferredSize(new Dimension(800, 600));
+ setPreferredSize(new Dimension(800, 700));
setMinimumSize(new Dimension(200, 60));
setLayout(new BoxLayout(getContentPane(), BoxLayout.PAGE_AXIS));
Modified: incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/RepositoryInfoFrame.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/RepositoryInfoFrame.java?rev=1003880&r1=1003879&r2=1003880&view=diff
==============================================================================
--- incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/RepositoryInfoFrame.java (original)
+++ incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/RepositoryInfoFrame.java Sat Oct 2 20:47:57 2010
@@ -34,172 +34,149 @@ import org.apache.chemistry.opencmis.swi
public class RepositoryInfoFrame extends JFrame {
- private static final long serialVersionUID = 1L;
+ private static final long serialVersionUID = 1L;
- private static final String WINDOW_TITLE = "CMIS Repository Info";
+ private static final String WINDOW_TITLE = "CMIS Repository Info";
- private ClientModel model;
+ private ClientModel model;
- public RepositoryInfoFrame(ClientModel model) {
- super();
+ public RepositoryInfoFrame(ClientModel model) {
+ super();
- this.model = model;
- createGUI();
- }
-
- private void createGUI() {
- setTitle(WINDOW_TITLE + " - " + model.getRepositoryName());
- setPreferredSize(new Dimension(700, 700));
- setMinimumSize(new Dimension(200, 60));
-
- RepositoryInfo repInfo = null;
- try {
- repInfo = model.getRepositoryInfo();
- } catch (Exception e) {
- ClientHelper.showError(this, e);
- dispose();
- }
-
- add(new JScrollPane(new RepositoryInfoPanel(repInfo)));
-
- setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
- pack();
-
- setLocationRelativeTo(null);
- setVisible(true);
- }
-
- static class RepositoryInfoPanel extends InfoPanel {
-
- private static final long serialVersionUID = 1L;
-
- private RepositoryInfo repInfo;
-
- public RepositoryInfoPanel(RepositoryInfo repInfo) {
- super();
-
- this.repInfo = repInfo;
- createGUI();
- }
-
- private void createGUI() {
- setupGUI();
-
- addLine("Name:", true).setText(repInfo.getName());
- addLine("Id:").setText(repInfo.getId());
- addLine("Description:").setText(repInfo.getDescription());
- addLine("Vendor:").setText(repInfo.getVendorName());
- addLine("Product:").setText(
- repInfo.getProductName() + " "
- + repInfo.getProductVersion());
- addLine("CMIS Version:").setText(repInfo.getCmisVersionSupported());
- addLine("Root folder Id:").setText(repInfo.getRootFolderId());
- addLine("Latest change token:").setText(
- repInfo.getLatestChangeLogToken());
- addLine("Thin client URI:").setText(repInfo.getThinClientUri());
- addLine("Principal id anonymous:").setText(
- repInfo.getPrincipalIdAnonymous());
- addLine("Principal id anyone:").setText(
- repInfo.getPrincipalIdAnyone());
- addCheckBox("Changes incomplete:").setSelected(
- is(repInfo.getChangesIncomplete()));
- addLine("Changes on type:").setText(
- repInfo.getChangesOnType() == null ? "" : repInfo
- .getChangesOnType().toString());
-
- if (repInfo.getCapabilities() != null) {
- RepositoryCapabilities cap = repInfo.getCapabilities();
-
- addLine("Capabilities", true).setText("");
-
- addCheckBox("Get descendants supported:").setSelected(
- is(cap.isGetDescendantsSupported()));
- addCheckBox("Get folder tree supported:").setSelected(
- is(cap.isGetFolderTreeSupported()));
- addCheckBox("Unfiling supported:").setSelected(
- is(cap.isUnfilingSupported()));
- addCheckBox("Multifiling supported:").setSelected(
- is(cap.isMultifilingSupported()));
- addCheckBox("Version specific filing supported:").setSelected(
- is(cap.isVersionSpecificFilingSupported()));
- addLine("Query:").setText(str(cap.getQueryCapability()));
- addLine("Joins:").setText(str(cap.getJoinCapability()));
- addCheckBox("All versions searchable:").setSelected(
- is(cap.isAllVersionsSearchableSupported()));
- addCheckBox("PWC searchable:").setSelected(
- is(cap.isPwcSearchableSupported()));
- addCheckBox("PWC updatable:").setSelected(
- is(cap.isPwcUpdatableSupported()));
- addLine("Content stream updates:").setText(
- str(cap.getContentStreamUpdatesCapability()));
- addLine("Renditions:").setText(
- str(cap.getRenditionsCapability()));
- addLine("Changes:").setText(str(cap.getChangesCapability()));
- addLine("ACLs:").setText(str(cap.getAclCapability()));
- }
-
- if (repInfo.getAclCapabilities() != null) {
- AclCapabilities cap = repInfo.getAclCapabilities();
-
- addLine("ACL Capabilities", true).setText("");
-
- addLine("Supported permissions:").setText(
- str(cap.getSupportedPermissions()));
- addLine("ACL propagation:").setText(
- str(cap.getAclPropagation()));
-
- if (cap.getPermissions() != null) {
- String[][] data = new String[cap.getPermissions().size()][2];
-
- int i = 0;
- for (PermissionDefinition pd : cap.getPermissions()) {
- data[i][0] = pd.getId();
- data[i][1] = pd.getDescription();
- i++;
- }
-
- JTable permTable = new JTable(data, new String[] {
- "Permission", "Description" });
- permTable.setFillsViewportHeight(true);
- addComponent("Permissions", new JScrollPane(permTable));
- }
-
- if (cap.getPermissionMapping() != null) {
- String[][] data = new String[cap.getPermissionMapping()
- .size()][2];
-
- int i = 0;
- for (PermissionMapping pm : cap.getPermissionMapping()
- .values()) {
- data[i][0] = pm.getKey();
- data[i][1] = (pm.getPermissions() == null ? "" : pm
- .getPermissions().toString());
- i++;
- }
-
- JTable permMapTable = new JTable(data, new String[] {
- "Key", "Permissions" });
- permMapTable.setFillsViewportHeight(true);
- addComponent("Permission mapping", new JScrollPane(
- permMapTable));
- }
- }
- }
-
- private boolean is(Boolean b) {
- if (b == null) {
- return false;
- }
-
- return b.booleanValue();
- }
-
- private String str(Object o) {
- if (o == null) {
- return "?";
- }
-
- return o.toString();
- }
- }
+ this.model = model;
+ createGUI();
+ }
+
+ private void createGUI() {
+ setTitle(WINDOW_TITLE + " - " + model.getRepositoryName());
+ setPreferredSize(new Dimension(700, 700));
+ setMinimumSize(new Dimension(200, 60));
+
+ RepositoryInfo repInfo = null;
+ try {
+ repInfo = model.getRepositoryInfo();
+ } catch (Exception e) {
+ ClientHelper.showError(this, e);
+ dispose();
+ return;
+ }
+
+ add(new JScrollPane(new RepositoryInfoPanel(repInfo)));
+
+ setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
+ pack();
+
+ setLocationRelativeTo(null);
+ setVisible(true);
+ }
+
+ static class RepositoryInfoPanel extends InfoPanel {
+
+ private static final long serialVersionUID = 1L;
+
+ private RepositoryInfo repInfo;
+
+ public RepositoryInfoPanel(RepositoryInfo repInfo) {
+ super();
+
+ this.repInfo = repInfo;
+ createGUI();
+ }
+
+ private void createGUI() {
+ setupGUI();
+
+ addLine("Name:", true).setText(repInfo.getName());
+ addLine("Id:").setText(repInfo.getId());
+ addLine("Description:").setText(repInfo.getDescription());
+ addLine("Vendor:").setText(repInfo.getVendorName());
+ addLine("Product:").setText(repInfo.getProductName() + " " + repInfo.getProductVersion());
+ addLine("CMIS Version:").setText(repInfo.getCmisVersionSupported());
+ addLine("Root folder Id:").setText(repInfo.getRootFolderId());
+ addLine("Latest change token:").setText(repInfo.getLatestChangeLogToken());
+ addLine("Thin client URI:").setText(repInfo.getThinClientUri());
+ addLine("Principal id anonymous:").setText(repInfo.getPrincipalIdAnonymous());
+ addLine("Principal id anyone:").setText(repInfo.getPrincipalIdAnyone());
+ addCheckBox("Changes incomplete:").setSelected(is(repInfo.getChangesIncomplete()));
+ addLine("Changes on type:").setText(
+ repInfo.getChangesOnType() == null ? "" : repInfo.getChangesOnType().toString());
+
+ if (repInfo.getCapabilities() != null) {
+ RepositoryCapabilities cap = repInfo.getCapabilities();
+
+ addLine("Capabilities", true).setText("");
+
+ addCheckBox("Get descendants supported:").setSelected(is(cap.isGetDescendantsSupported()));
+ addCheckBox("Get folder tree supported:").setSelected(is(cap.isGetFolderTreeSupported()));
+ addCheckBox("Unfiling supported:").setSelected(is(cap.isUnfilingSupported()));
+ addCheckBox("Multifiling supported:").setSelected(is(cap.isMultifilingSupported()));
+ addCheckBox("Version specific filing supported:").setSelected(
+ is(cap.isVersionSpecificFilingSupported()));
+ addLine("Query:").setText(str(cap.getQueryCapability()));
+ addLine("Joins:").setText(str(cap.getJoinCapability()));
+ addCheckBox("All versions searchable:").setSelected(is(cap.isAllVersionsSearchableSupported()));
+ addCheckBox("PWC searchable:").setSelected(is(cap.isPwcSearchableSupported()));
+ addCheckBox("PWC updatable:").setSelected(is(cap.isPwcUpdatableSupported()));
+ addLine("Content stream updates:").setText(str(cap.getContentStreamUpdatesCapability()));
+ addLine("Renditions:").setText(str(cap.getRenditionsCapability()));
+ addLine("Changes:").setText(str(cap.getChangesCapability()));
+ addLine("ACLs:").setText(str(cap.getAclCapability()));
+ }
+
+ if (repInfo.getAclCapabilities() != null) {
+ AclCapabilities cap = repInfo.getAclCapabilities();
+
+ addLine("ACL Capabilities", true).setText("");
+
+ addLine("Supported permissions:").setText(str(cap.getSupportedPermissions()));
+ addLine("ACL propagation:").setText(str(cap.getAclPropagation()));
+
+ if (cap.getPermissions() != null) {
+ String[][] data = new String[cap.getPermissions().size()][2];
+
+ int i = 0;
+ for (PermissionDefinition pd : cap.getPermissions()) {
+ data[i][0] = pd.getId();
+ data[i][1] = pd.getDescription();
+ i++;
+ }
+
+ JTable permTable = new JTable(data, new String[] { "Permission", "Description" });
+ permTable.setFillsViewportHeight(true);
+ addComponent("Permissions", new JScrollPane(permTable));
+ }
+
+ if (cap.getPermissionMapping() != null) {
+ String[][] data = new String[cap.getPermissionMapping().size()][2];
+
+ int i = 0;
+ for (PermissionMapping pm : cap.getPermissionMapping().values()) {
+ data[i][0] = pm.getKey();
+ data[i][1] = (pm.getPermissions() == null ? "" : pm.getPermissions().toString());
+ i++;
+ }
+
+ JTable permMapTable = new JTable(data, new String[] { "Key", "Permissions" });
+ permMapTable.setFillsViewportHeight(true);
+ addComponent("Permission mapping", new JScrollPane(permMapTable));
+ }
+ }
+ }
+
+ private boolean is(Boolean b) {
+ if (b == null) {
+ return false;
+ }
+
+ return b.booleanValue();
+ }
+
+ private String str(Object o) {
+ if (o == null) {
+ return "?";
+ }
+
+ return o.toString();
+ }
+ }
}
Modified: incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/TypesFrame.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/TypesFrame.java?rev=1003880&r1=1003879&r2=1003880&view=diff
==============================================================================
--- incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/TypesFrame.java (original)
+++ incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/TypesFrame.java Sat Oct 2 20:47:57 2010
@@ -72,7 +72,7 @@ public class TypesFrame extends JFrame {
private void createGUI() {
setTitle(WINDOW_TITLE + " - " + model.getRepositoryName());
- setPreferredSize(new Dimension(800, 600));
+ setPreferredSize(new Dimension(800, 700));
setMinimumSize(new Dimension(200, 60));
typesTree = new JTree();
@@ -336,14 +336,14 @@ public class TypesFrame extends JFrame {
static class PropertyDefinitionTableModel extends AbstractTableModel {
+ private static final long serialVersionUID = 1L;
+
private PropertyDefinitionTable table;
public PropertyDefinitionTableModel(PropertyDefinitionTable table) {
this.table = table;
}
- private static final long serialVersionUID = 1L;
-
public String getColumnName(int columnIndex) {
return COLUMN_NAMES[columnIndex];
}
Modified: incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/model/ClientModel.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/model/ClientModel.java?rev=1003880&r1=1003879&r2=1003880&view=diff
==============================================================================
--- incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/model/ClientModel.java (original)
+++ incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/model/ClientModel.java Sat Oct 2 20:47:57 2010
@@ -113,6 +113,16 @@ public class ClientModel {
}
}
+ public synchronized boolean supportsChangeLog() {
+ try {
+ return (getRepositoryInfo().getChangesOnType() != null)
+ && (!getRepositoryInfo().getChangesOnType().isEmpty());
+ } catch (Exception e) {
+ return false;
+ }
+
+ }
+
public synchronized void loadFolder(String folderId, boolean byPath) throws Exception {
try {
Session session = clientSession.getSession();
Added: incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/swing/GregorianCalendarRenderer.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/swing/GregorianCalendarRenderer.java?rev=1003880&view=auto
==============================================================================
--- incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/swing/GregorianCalendarRenderer.java (added)
+++ incubator/chemistry/opencmis-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/swing/GregorianCalendarRenderer.java Sat Oct 2 20:47:57 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.swingclient.swing;
+
+import java.util.GregorianCalendar;
+
+import javax.swing.table.DefaultTableCellRenderer;
+
+import org.apache.chemistry.opencmis.swingclient.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-swingclient/trunk/src/main/java/org/apache/chemistry/opencmis/swingclient/swing/GregorianCalendarRenderer.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/changelog.png
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/changelog.png?rev=1003880&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/images/changelog.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Modified: incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/scripts/CMIS.groovy
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/scripts/CMIS.groovy?rev=1003880&r1=1003879&r2=1003880&view=diff
==============================================================================
--- incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/scripts/CMIS.groovy (original)
+++ incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/scripts/CMIS.groovy Sat Oct 2 20:47:57 2010
@@ -19,6 +19,8 @@
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.*
@@ -122,6 +124,24 @@ class CMIS {
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.swingclient.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)
}
Modified: incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/scripts/script-library.properties
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/scripts/script-library.properties?rev=1003880&r1=1003879&r2=1003880&view=diff
==============================================================================
--- incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/scripts/script-library.properties (original)
+++ incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/scripts/script-library.properties Sat Oct 2 20:47:57 2010
@@ -30,3 +30,4 @@ 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
Added: incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/scripts/upload.groovy
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/scripts/upload.groovy?rev=1003880&view=auto
==============================================================================
--- incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/scripts/upload.groovy (added)
+++ incubator/chemistry/opencmis-swingclient/trunk/src/main/resources/scripts/upload.groovy Sat Oct 2 20:47:57 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)
+ }
+ }
+}