/** * * Copyright * 2009-2015 Jayway Products AB * 2016-2017 Föreningen Sambruk * * Licensed under AGPL, Version 3.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.gnu.org/licenses/agpl.txt * * 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 se.streamsource.streamflow.client.ui.workspace.table; import ca.odell.glazedlists.SeparatorList; import ca.odell.glazedlists.gui.AdvancedTableFormat; import se.streamsource.dci.value.link.LinkValue; import se.streamsource.streamflow.api.administration.priority.PriorityValue; import se.streamsource.streamflow.api.workspace.cases.CaseStates; import se.streamsource.streamflow.client.Icons; import se.streamsource.streamflow.client.ui.workspace.cases.CaseTableValue; import se.streamsource.streamflow.util.Strings; import java.util.ArrayList; import java.util.Comparator; import java.util.Date; import java.util.List; import static se.streamsource.streamflow.client.ui.workspace.WorkspaceResources.*; import static se.streamsource.streamflow.client.util.i18n.*; /** * JAVADOC */ public class CasesTableFormatter implements AdvancedTableFormat<Object> { protected String[] columnNames; protected Class[] columnClasses; StringBuilder description = new StringBuilder(); public CasesTableFormatter() { columnNames = new String[]{ text( title_column_header ), text( info_column_header ), text( casetype_column_header ), text( assignee_column_header ), text( created_column_header ), text( created_by_column_header ), text( duedate_column_header ), text( project_column_header ), text( case_priority_header ), text( case_status_header )}; columnClasses = new Class[]{ String.class, ArrayList.class, String.class, String.class, Date.class, String.class, Date.class, String.class, PriorityValue.class, CaseStates.class }; } public int getColumnCount() { return columnNames.length; } public String getColumnName( int i ) { return columnNames[i]; } public Class getColumnClass( int i ) { return columnClasses[i]; } public Comparator getColumnComparator( int i ) { return null; } public Object getColumnValue( Object value, int i ) { if (value instanceof SeparatorList.Separator) { SeparatorList.Separator separator = (SeparatorList.Separator) value; return separator; } else { CaseTableValue caseValue = (CaseTableValue) value; switch (i) { case 0: { description.setLength( 0 ); if (!Strings.empty( caseValue.caseId().get() )) description.append( "#" ).append( caseValue.caseId() ).append( " " ); description.append( caseValue.description().get() ); List<LinkValue> labels = caseValue.labels().get().links().get(); if (labels.size() > 0) { description.append( " (" ); String comma = ""; for (LinkValue label : labels) { description.append( comma ).append( label.text().get() ); comma = ","; } description.append( ")" ); } return description.toString(); } case 1: ArrayList<String> icons = new ArrayList<String>(); icons.add( caseValue.hasContacts().get() ? Icons.projects.toString() : "empty" ); icons.add( caseValue.hasUnreadConversation().get() ? Icons.unreadconversations.toString() : caseValue.hasConversations().get() ? Icons.conversations.toString() : "empty" ); icons.add( caseValue.hasUnreadForm().get() ? Icons.unreadforms.toString() : caseValue.hasSubmittedForms().get() ? Icons.forms.toString() : "empty" ); icons.add( caseValue.hasAttachments().get() ? Icons.attachments.toString() : "empty" ); return icons; case 2: return caseValue.caseType().get() == null ? null : (caseValue.caseType().get() + (Strings.empty( caseValue.resolution().get() ) ? "" : "(" + caseValue.resolution().get() + ")")); case 3: return caseValue.assignedTo().get(); case 4: return caseValue.creationDate().get(); case 5: return caseValue.createdBy().get(); case 6: return caseValue.dueOn().get(); case 7: return caseValue.owner().get(); case 8: return caseValue.priority().get(); case 9: return caseValue.status().get(); case 10: return caseValue.href().get(); } return null; } } }