diff --git a/ccm-core/src/com/arsdigita/ui/admin/applications/MultiInstanceApplicationPane.java b/ccm-core/src/com/arsdigita/ui/admin/applications/MultiInstanceApplicationPane.java index 86e85163f..2493dff79 100644 --- a/ccm-core/src/com/arsdigita/ui/admin/applications/MultiInstanceApplicationPane.java +++ b/ccm-core/src/com/arsdigita/ui/admin/applications/MultiInstanceApplicationPane.java @@ -31,12 +31,14 @@ import com.arsdigita.util.LockableImpl; import com.arsdigita.web.Application; import com.arsdigita.web.ApplicationCollection; import com.arsdigita.web.ApplicationType; +import java.util.ArrayList; +import java.util.List; /** - * Pane for multi instance applications. Additional to the data provided by {@link BaseApplicationPane} it shows a - * table of all instances of the application type and a form for creating new instances of the application type. - * - * @param + * Pane for multi instance applications. Additional to the data provided by {@link BaseApplicationPane} it shows a table + * of all instances of the application type and a form for creating new instances of the application type. + * + * @param * @author Jens Pelzetter * @version $Id$ */ @@ -86,66 +88,113 @@ public class MultiInstanceApplicationPane extends BaseApp private class ApplicationInstancesTableModelBuilder extends LockableImpl implements TableModelBuilder { - private final ApplicationCollection applications; + //private final ApplicationCollection applications; + private final String appType; - public ApplicationInstancesTableModelBuilder(final ApplicationCollection applications) { - super(); - - this.applications = applications; - } - + //public ApplicationInstancesTableModelBuilder(final ApplicationCollection applications) { + // super(); + // + // this.applications = applications; + //} public ApplicationInstancesTableModelBuilder(final String appType) { super(); - - this.applications = Application.retrieveAllApplications(appType); + + //this.applications = Application.retrieveAllApplications(appType); + this.appType = appType; } public TableModel makeModel(final Table table, final PageState state) { - return new ApplicationInstancesTableModel(table, applications); + return new ApplicationInstancesTableModel(table, appType); } - } private class ApplicationInstancesTableModel implements TableModel { private final Table table; - private final ApplicationCollection applications; + //private final ApplicationCollection applications; + private final List appData = new ArrayList(); + private int currentIndex = -1; - public ApplicationInstancesTableModel(final Table table, final ApplicationCollection applications) { + //public ApplicationInstancesTableModel(final Table table, final ApplicationCollection applications) { + // this.table = table; + // this.applications = applications; + //} + public ApplicationInstancesTableModel(final Table table, final String appType) { this.table = table; - this.applications = applications; + final ApplicationCollection applications = Application.retrieveAllApplications(appType); + while (applications.next()) { + addAppData(applications.getApplication()); + } + } + + private void addAppData(final Application application) { + appData.add(new AppData(application.getTitle(), + application.getDescription(), + application.getPath())); } public int getColumnCount() { return table.getColumnModel().size(); } - public boolean nextRow() { - if (applications.isAfterLast()) { - applications.rewind(); - } - return applications.next(); + public boolean nextRow() { + currentIndex++; + return currentIndex < appData.size(); } public Object getElementAt(final int columnIndex) { switch (columnIndex) { case COL_TITLE: - return applications.getApplication().getTitle(); + //return applications.getApplication().getTitle(); + return appData.get(currentIndex).getTitle(); case COL_DESC: - return applications.getApplication().getDescription(); + //return applications.getApplication().getDescription(); + return appData.get(currentIndex).getDescription(); case COL_URL: - return applications.getApplication().getPath(); + //return applications.getApplication().getPath(); + return appData.get(currentIndex).getPath(); default: return null; } } public Object getKeyAt(final int columnIndex) { - if (SessionManager.getSession().getTransactionContext().inTxn()) { - SessionManager.getSession().getTransactionContext().commitTxn(); - } - return applications.getApplication().getPath(); + //if (SessionManager.getSession().getTransactionContext().inTxn()) { + // SessionManager.getSession().getTransactionContext().commitTxn(); + //} + //return applications.getApplication().getPath(); + return appData.get(currentIndex).getPath(); + } + } + + private class AppData { + + private final String title; + private final String description; + private final String path; + + public AppData() { + title = ""; + description = ""; + path = ""; } + public AppData(final String title, final String description, final String path) { + this.title = title; + this.description = description; + this.path = path; + } + + public String getTitle() { + return title; + } + + public String getDescription() { + return description; + } + + public String getPath() { + return path; + } } }