Return-Path: Delivered-To: apmail-incubator-chemistry-commits-archive@minotaur.apache.org Received: (qmail 25445 invoked from network); 2 Oct 2010 20:48:20 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 2 Oct 2010 20:48:20 -0000 Received: (qmail 98225 invoked by uid 500); 2 Oct 2010 20:48:20 -0000 Delivered-To: apmail-incubator-chemistry-commits-archive@incubator.apache.org Received: (qmail 98183 invoked by uid 500); 2 Oct 2010 20:48:20 -0000 Mailing-List: contact chemistry-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: chemistry-dev@incubator.apache.org Delivered-To: mailing list chemistry-commits@incubator.apache.org Received: (qmail 98175 invoked by uid 99); 2 Oct 2010 20:48:20 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 02 Oct 2010 20:48:20 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 02 Oct 2010 20:48:18 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id E224E238890D; Sat, 2 Oct 2010 20:47:57 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: 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... Date: Sat, 02 Oct 2010 20:47:57 -0000 To: chemistry-commits@incubator.apache.org From: fmui@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20101002204757.E224E238890D@eris.apache.org> 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 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 changeEvents) { + this.changeEvents = changeEvents; + ((AbstractTableModel) getModel()).fireTableDataChanged(); + } + + public List 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) + } + } +}