package com.constellio.app.modules.rm.ui.pages.decommissioning;
import com.constellio.app.modules.rm.navigation.RMViews;
import com.constellio.app.modules.rm.ui.components.decommissioning.ContainerDetailTableGenerator;
import com.constellio.app.modules.rm.ui.components.decommissioning.DecomValidationRequestWindowButton;
import com.constellio.app.modules.rm.ui.components.decommissioning.FolderDetailTableGenerator;
import com.constellio.app.modules.rm.ui.components.decommissioning.ValidationsGenerator;
import com.constellio.app.modules.rm.ui.entities.ContainerVO;
import com.constellio.app.modules.rm.ui.entities.FolderDetailVO;
import com.constellio.app.modules.rm.wrappers.ContainerRecord;
import com.constellio.app.modules.rm.wrappers.DecommissioningList;
import com.constellio.app.modules.rm.wrappers.structures.DecomListContainerDetail;
import com.constellio.app.modules.rm.wrappers.structures.DecomListValidation;
import com.constellio.app.ui.entities.RecordVO;
import com.constellio.app.ui.framework.buttons.*;
import com.constellio.app.ui.framework.components.RecordDisplay;
import com.constellio.app.ui.framework.components.fields.comment.RecordCommentsEditorImpl;
import com.constellio.app.ui.framework.components.table.BaseTable;
import com.constellio.app.ui.pages.base.BaseViewImpl;
import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.data.Property.ValueChangeListener;
import com.vaadin.data.util.BeanItemContainer;
import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent;
import com.vaadin.ui.*;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.themes.ValoTheme;
import org.vaadin.dialogs.ConfirmDialog;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static com.constellio.app.ui.i18n.i18n.$;
public class DecommissioningListViewImpl extends BaseViewImpl implements DecommissioningListView {
public static final String PROCESS = "process";
public static final String APPROVAL_BUTTON = "approval";
public static final String APPROVAL_REQUEST_BUTTON = "approvalRequest";
public static final String VALIDATION_BUTTON = "validation";
public static final String VALIDATION_REQUEST_BUTTON = "sendValidationRequest";
public static final String REMOVE_FOLDERS_BUTTON = "removeFolders";
public static final String ADD_FOLDERS_BUTTON = "addFolders";
private final DecommissioningListPresenter presenter;
private RecordVO decommissioningList;
private BeanItemContainer<ContainerVO> containerVOs;
private Component validationComponent;
private BaseTable validations;
private Component foldersToValidateComponent;
private BaseTable foldersToValidate;
private Component packageableFolderComponent;
private BaseTable packageableFolders;
private Component processableFolderComponent;
private BaseTable processableFolders;
private Component excludedFolderComponent;
private BaseTable excludedFolders;
private Component containerComponent;
private BaseTable containerTable;
private ComboBox containerComboBox;
private Button process;
private Button validationRequest;
private Button validation;
private Button approval;
private Button approvalRequest;
private Button removeFolders;
private Button addFolders;
public DecommissioningListViewImpl() {
presenter = new DecommissioningListPresenter(this);
}
@Override
protected String getTitle() {
return $("DecommissioningListView.viewTitle");
}
@Override
protected ClickListener getBackButtonClickListener() {
return new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
navigate().to(RMViews.class).decommissioning();
}
};
}
@Override
protected void initBeforeCreateComponents(ViewChangeEvent event) {
decommissioningList = presenter.forRecordId(event.getParameters()).getDecommissioningList();
}
@Override
protected Component buildMainComponent(ViewChangeEvent event) {
RecordDisplay display = new RecordDisplay(decommissioningList);
containerVOs = new BeanItemContainer<>(ContainerVO.class, presenter.getContainers());
List<DecomListValidation> validations = presenter.getValidations();
validationComponent = buildValidatorsComponent(validations);
validationComponent.setVisible(!validations.isEmpty());
if (presenter.isValidationRequestedForCurrentUser()) {
List<FolderDetailVO> foldersToValidate = presenter.getFoldersToValidate();
foldersToValidateComponent = buildFoldersToValidateComponent(foldersToValidate);
foldersToValidateComponent.setVisible(!foldersToValidate.isEmpty());
packageableFolders = new BaseTable("DecommissioningListView.packageableFolders");
packageableFolderComponent = new VerticalLayout(packageableFolders);
packageableFolderComponent.setVisible(false);
processableFolders = new BaseTable("DecommissioningListView.processableFolders");
processableFolderComponent = new VerticalLayout(processableFolders);
processableFolderComponent.setVisible(false);
} else {
List<FolderDetailVO> packageableFolders = presenter.getPackageableFolders();
packageableFolderComponent = buildPackageableFolderComponent(packageableFolders);
packageableFolderComponent.setVisible(!packageableFolders.isEmpty());
List<FolderDetailVO> processableFolders = presenter.getProcessableFolders();
processableFolderComponent = buildProcessableFolderComponent(processableFolders);
processableFolderComponent.setVisible(!processableFolders.isEmpty());
foldersToValidate = new BaseTable("DecommissioningListView.foldersToValidate");
foldersToValidateComponent = new VerticalLayout(foldersToValidate);
foldersToValidateComponent.setVisible(false);
}
List<FolderDetailVO> excludedFolders = presenter.getExcludedFolders();
excludedFolderComponent = buildExcludedFolderComponent(excludedFolders);
excludedFolderComponent.setVisible(!excludedFolders.isEmpty());
List<DecomListContainerDetail> containerDetails = presenter.getContainerDetails();
containerComponent = buildContainerComponent(containerDetails);
containerComponent.setVisible(!containerDetails.isEmpty());
RecordCommentsEditorImpl comments = new RecordCommentsEditorImpl(decommissioningList, DecommissioningList.COMMENTS);
comments.addValueChangeListener(new ValueChangeListener() {
@Override
public void valueChange(ValueChangeEvent event) {
presenter.refreshList();
}
});
VerticalLayout layout = new VerticalLayout(display, validationComponent, packageableFolderComponent,
processableFolderComponent, foldersToValidateComponent, excludedFolderComponent, containerComponent, comments);
layout.setSpacing(true);
layout.setWidth("100%");
return layout;
}
@Override
protected List<Button> buildActionMenuButtons(ViewChangeEvent event) {
List<Button> buttons = super.buildActionMenuButtons(event);
buttons.add(buildEditButton());
buttons.add(buildDeleteButton());
buttons.add(buildValidationRequestButton());
buttons.add(buildValidationButton());
buttons.add(buildProcessButton());
buttons.add(buildApprovalRequestButton());
buttons.add(buildApprovalButton());
buttons.add(buildPrintButton());
buttons.add(buildDocumentsCertificateButton());
buttons.add(buildFoldersCertificateButton());
buttons.add(buildAddFoldersButton());
buttons.add(buildRemoveFoldersButton());
return buttons;
}
private Button buildOrderFoldersToValidateButton() {
Button button = new LinkButton($("DecommissioningListView.order")) {
@Override
protected void buttonClick(ClickEvent event) {
presenter.reorderRequested(OrderDecommissioningListPresenter.TableType.TO_VALIDATE);
}
};
return button;
}
private Button buildOrderProcessableFoldersButton() {
Button button = new LinkButton($("DecommissioningListView.order")) {
@Override
protected void buttonClick(ClickEvent event) {
presenter.reorderRequested(OrderDecommissioningListPresenter.TableType.PROCESSABLE);
}
};
return button;
}
private Button buildOrderPackageableFoldersButton() {
Button button = new LinkButton($("DecommissioningListView.order")) {
@Override
protected void buttonClick(ClickEvent event) {
presenter.reorderRequested(OrderDecommissioningListPresenter.TableType.PACKAGEABLE);
}
};
return button;
}
private Button buildOrderExcludedFoldersButton() {
Button button = new LinkButton($("DecommissioningListView.order")) {
@Override
protected void buttonClick(ClickEvent event) {
presenter.reorderRequested(OrderDecommissioningListPresenter.TableType.EXCLUDED);
}
};
return button;
}
@Override
public void updateProcessButtonState(boolean processable) {
process.setEnabled(processable);
}
@Override
public void setProcessable(FolderDetailVO folderVO) {
removeFolderFromComponent(folderVO, excludedFolders, excludedFolderComponent);
removeFolderFromComponent(folderVO, packageableFolders, packageableFolderComponent);
addFolderToComponent(folderVO, processableFolders, processableFolderComponent);
}
@Override
public void setPackageable(FolderDetailVO folderVO) {
removeFolderFromComponent(folderVO, excludedFolders, excludedFolderComponent);
removeFolderFromComponent(folderVO, processableFolders, processableFolderComponent);
addFolderToComponent(folderVO, packageableFolders, packageableFolderComponent);
}
private void removeFolderFromComponent(FolderDetailVO folder, BaseTable table, Component component) {
if (table.containsId(folder)) {
table.removeItem(folder);
table.setCaption($("DecommissioningListView.folderDetails", table.size()));
table.setPageLength(table.size());
component.setVisible(table.size() > 0);
}
}
private void addFolderToComponent(FolderDetailVO folder, BaseTable table, Component component) {
if (!table.containsId(folder)) {
table.addItem(folder);
table.setCaption($("DecommissioningListView.folderDetails", table.size()));
table.setPageLength(table.size());
component.setVisible(true);
} else {
table.refreshRowCache();
}
}
private void addContainerToComponent(DecomListContainerDetail newContainerDetail, BaseTable table, Component component) {
boolean wasFound = false;
for(Object object: table.getItemIds()) {
DecomListContainerDetail detail = (DecomListContainerDetail) object;
if(detail.getContainerRecordId().equals(newContainerDetail.getContainerRecordId())) {
detail.setAvailableSize(newContainerDetail.getAvailableSize());
wasFound = true;
break;
}
}
if(!wasFound) {
table.addItem(newContainerDetail);
table.setCaption($("DecommissioningListView.containerDetails", table.size()));
table.setPageLength(table.size());
component.setVisible(true);
}
table.refreshRowCache();
}
private Button buildEditButton() {
Button button = new EditButton(false) {
@Override
protected void buttonClick(ClickEvent event) {
presenter.editButtonClicked();
}
};
button.setEnabled(presenter.isEditable());
return button;
}
private Button buildDeleteButton() {
Button button = new DeleteButton(false) {
@Override
protected void confirmButtonClick(ConfirmDialog dialog) {
presenter.deleteButtonClicked();
}
@Override
protected String getConfirmDialogMessage() {
return presenter.getDeleteConfirmMessage();
}
};
button.setEnabled(presenter.isDeletable());
return button;
}
private Button buildValidationRequestButton() {
validationRequest = new DecomValidationRequestWindowButton(presenter);
validationRequest.setEnabled(presenter.canSendValidationRequest());
validationRequest.addStyleName(VALIDATION_REQUEST_BUTTON);
return validationRequest;
}
private Button buildRemoveFoldersButton() {
removeFolders = new DeleteButton($("DecommissioningListView.removeFromList")) {
@Override
protected void confirmButtonClick(ConfirmDialog dialog) {
List<FolderDetailVO> selected = new ArrayList<>();
for (Object itemId : packageableFolders.getItemIds()) {
FolderDetailVO folder = (FolderDetailVO) itemId;
if (folder.isSelected()) {
folder.setSelected(false);
selected.add(folder);
}
}
for (Object itemId : processableFolders.getItemIds()) {
FolderDetailVO folder = (FolderDetailVO) itemId;
if (folder.isSelected()) {
folder.setSelected(false);
selected.add(folder);
}
}
for (Object itemId : excludedFolders.getItemIds()) {
FolderDetailVO folder = (FolderDetailVO) itemId;
if (folder.isSelected()) {
folder.setSelected(false);
selected.add(folder);
}
}
presenter.removeFoldersButtonClicked(selected);
}
@Override
protected String getConfirmDialogMessage() {
return $("DecommissioningListView.removeFromListConfirmation");
}
@Override
public boolean isEnabled() {
return !presenter.isInValidation() && !presenter.isApproved() && !presenter.isProcessed();
}
};
removeFolders.setEnabled(!presenter.isInValidation() && !presenter.isApproved() && !presenter.isProcessed());
return removeFolders;
}
private Button buildAddFoldersButton() {
addFolders = new AddButton($("DecommissioningListView.addToList")) {
@Override
protected void buttonClick(ClickEvent clickEvent) {
presenter.addFoldersButtonClicked();
}
@Override
public boolean isEnabled() {
return !presenter.isInValidation() && !presenter.isApproved() && !presenter.isProcessed();
}
};
addFolders.setEnabled(!presenter.isInValidation() && !presenter.isApproved() && !presenter.isProcessed());
return addFolders;
}
private Button buildValidationButton() {
validation = new ConfirmDialogButton(null, $("DecommissioningListView.validate"), false) {
@Override
protected String getConfirmDialogMessage() {
return $("DecommissioningListView.confirmValidation");
}
@Override
protected void confirmButtonClick(ConfirmDialog dialog) {
presenter.validateButtonClicked();
}
};
validation.setEnabled(presenter.canValidate());
validation.addStyleName(VALIDATION_BUTTON);
return validation;
}
private Button buildProcessButton() {
process = new ConfirmDialogButton(null, $("DecommissioningListView.process"), false) {
@Override
protected String getConfirmDialogMessage() {
return $("DecommissioningListView.confirmProcessing");
}
@Override
protected void confirmButtonClick(ConfirmDialog dialog) {
presenter.processButtonClicked();
}
};
process.setEnabled(presenter.isProcessable());
process.addStyleName(PROCESS);
return process;
}
private Button buildApprovalRequestButton() {
approvalRequest = new ConfirmDialogButton(null, $("DecommissioningListView.approvalRequest"), false) {
@Override
protected String getConfirmDialogMessage() {
return $("DecommissioningListView.confirmApprovalRequest");
}
@Override
protected void confirmButtonClick(ConfirmDialog dialog) {
presenter.approvalRequestButtonClicked();
}
};
approvalRequest.setEnabled(presenter.canSendApprovalRequest());
approvalRequest.addStyleName(APPROVAL_REQUEST_BUTTON);
return approvalRequest;
}
private Button buildApprovalButton() {
approval = new ConfirmDialogButton(null, $("DecommissioningListView.approve"), false) {
@Override
protected String getConfirmDialogMessage() {
return $("DecommissioningListView.confirmApproval");
}
@Override
protected void confirmButtonClick(ConfirmDialog dialog) {
presenter.approvalButtonClicked();
}
};
approval.setEnabled(presenter.canApprove());
approval.addStyleName(APPROVAL_BUTTON);
return approval;
}
private Button buildPrintButton() {
ReportButton button = new ReportButton("Reports.DecommissioningList", presenter);
button.setCaption($("DecommissioningListView.print"));
button.addStyleName(ValoTheme.BUTTON_LINK);
return button;
}
private Button buildDocumentsCertificateButton() {
ContentButton button = new ContentButton($("DecommissioningListView.documentsCertificate"),
presenter.getDocumentsReportContentId(),
presenter.getDocumentsReportContentName()) {
@Override
public boolean isVisible() {
return presenter.isDocumentsCertificateButtonVisible();
}
};
button.setCaption($("DecommissioningListView.documentsCertificate"));
button.addStyleName(ValoTheme.BUTTON_LINK);
return button;
}
private Button buildFoldersCertificateButton() {
ContentButton button = new ContentButton($("DecommissioningListView.foldersCertificate"),
presenter.getFoldersReportContentId(),
presenter.getFoldersReportContentName()) {
@Override
public boolean isVisible() {
return presenter.isFoldersCertificateButtonVisible();
}
};
button.setCaption($("DecommissioningListView.foldersCertificate"));
button.addStyleName(ValoTheme.BUTTON_LINK);
return button;
}
private Component buildValidatorsComponent(List<DecomListValidation> requests) {
Label header = new Label($("DecommissioningListView.validators"));
header.addStyleName(ValoTheme.LABEL_H2);
validations = buildValidationTable(requests);
VerticalLayout layout = new VerticalLayout(header, validations);
layout.setSpacing(true);
return layout;
}
private BaseTable buildValidationTable(List<DecomListValidation> requests) {
BeanItemContainer<DecomListValidation> container = new BeanItemContainer<>(DecomListValidation.class, requests);
BaseTable table = new BaseTable("DecommissioningListView.validationTable", $("DecommissioningListView.validations", container.size()), container);
table.setPageLength(container.size());
table.setWidth("100%");
return new ValidationsGenerator(presenter).attachTo(table);
}
private Component buildPackageableFolderComponent(List<FolderDetailVO> folders) {
Label header = new Label($("DecommissioningListView.containerizableFolders"));
header.addStyleName(ValoTheme.LABEL_H2);
Label label = new Label($("DecommissioningListView.containerSelector"));
containerComboBox = buildContainerSelector();
if (containerComboBox.size() > 0) {
containerComboBox.setValue(containerVOs.getIdByIndex(containerComboBox.size() - 1));
}
containerComboBox.setEnabled(presenter.canCurrentUserManageStorageSpaces());
containerComboBox.setVisible(presenter.canCurrentUserManageStorageSpaces());
Button placeFolders = new Button($("DecommissioningListView.placeInContainer"));
placeFolders.setEnabled(containerComboBox.size() > 0 && presenter.canCurrentUserManageStorageSpaces());
placeFolders.setVisible(presenter.canCurrentUserManageStorageSpaces());
placeFolders.addClickListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
List<FolderDetailVO> selected = new ArrayList<>();
for (Object itemId : packageableFolders.getItemIds()) {
FolderDetailVO folder = (FolderDetailVO) itemId;
if (folder.isSelected()) {
folder.setSelected(false);
selected.add(folder);
}
}
ContainerVO containerVO = (ContainerVO) containerComboBox.getValue();
for (FolderDetailVO folder : selected) {
try {
presenter.folderPlacedInContainer(folder, getContainer(containerVO));
} catch (Exception e) {
}
}
}
});
Button createContainer = new Button($("DecommissioningListView.createContainer"));
createContainer.addStyleName(ValoTheme.BUTTON_LINK);
createContainer.setEnabled(presenter.canCurrentUserManageStorageSpaces());
createContainer.setVisible(presenter.canCurrentUserManageStorageSpaces());
createContainer.addClickListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
presenter.containerCreationRequested();
}
});
Button searchContainer = new Button($("DecommissioningListView.searchContainer"));
searchContainer.addStyleName(ValoTheme.BUTTON_LINK);
searchContainer.setEnabled(presenter.canCurrentUserManageStorageSpaces());
searchContainer.setVisible(presenter.canCurrentUserManageStorageSpaces());
searchContainer.addClickListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
presenter.containerSearchRequested();
}
});
Button autoFillContainers = new Button($("DecommissioningListView.autoFillContainers"));
autoFillContainers.addStyleName(ValoTheme.BUTTON_LINK);
autoFillContainers.addClickListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
Map<String, Double> linearSizes = new HashMap<>();
for (Object itemId : packageableFolders.getItemIds()) {
FolderDetailVO currentFolder = (FolderDetailVO) itemId;
if(currentFolder.getLinearSize() == null) {
showErrorMessage($("DecommissioningListView.allFoldersMustHaveLinearSize"));
return;
}
linearSizes.put(currentFolder.getFolderId(), currentFolder.getLinearSize());
}
presenter.autoFillContainersRequested(linearSizes);
presenter.refreshView();
}
});
autoFillContainers.setEnabled(presenter.canCurrentUserManageStorageSpaces());
autoFillContainers.setVisible(presenter.canCurrentUserManageStorageSpaces());
HorizontalLayout controls = new HorizontalLayout(label, containerComboBox, placeFolders, createContainer, searchContainer, autoFillContainers);
controls.setComponentAlignment(label, Alignment.MIDDLE_LEFT);
controls.setSpacing(true);
controls.setVisible(presenter.shouldAllowContainerEditing());
packageableFolders = buildFolderTable(folders, presenter.shouldAllowContainerEditing());
VerticalLayout layout = new VerticalLayout(header, controls, packageableFolders, buildOrderPackageableFoldersButton());
layout.setSpacing(true);
return layout;
}
private Component buildFoldersToValidateComponent(List<FolderDetailVO> folders) {
Label header = new Label($("DecommissioningListView.foldersToValidate"));
header.addStyleName(ValoTheme.LABEL_H2);
foldersToValidate = buildFolderTable(folders, false);
VerticalLayout layout = new VerticalLayout(header, foldersToValidate, buildOrderFoldersToValidateButton());
layout.setSpacing(true);
return layout;
}
private Component buildProcessableFolderComponent(List<FolderDetailVO> folders) {
Label header = new Label(presenter.isProcessed() ?
$("DecommissioningListView.processedFolders") :
$("DecommissioningListView.processableFolders"));
header.addStyleName(ValoTheme.LABEL_H2);
processableFolders = buildFolderTable(folders, presenter.shouldAllowContainerEditing());
BaseButton removeFromFolderButton = new BaseButton($("DecommissioningListView.removeFromFolder")) {
@Override
protected void buttonClick(ClickEvent event) {
List<FolderDetailVO> selected = new ArrayList<>();
boolean areAllSelectedPackageable = true;
for (Object itemId : processableFolders.getItemIds()) {
FolderDetailVO folder = (FolderDetailVO) itemId;
if (folder.isSelected()) {
folder.setSelected(false);
selected.add(folder);
}
}
for (FolderDetailVO folder : selected) {
try {
presenter.removeFromContainer(folder);
if(folder.isPackageable()) {
setPackageable(folder);
} else {
areAllSelectedPackageable = false;
}
} catch (Exception e) {
}
}
if(!areAllSelectedPackageable) {
showErrorMessage($("DecommissioningListView.someFoldersAreNotPackageable"));
}
}
};
VerticalLayout layout = new VerticalLayout(header, removeFromFolderButton, processableFolders, buildOrderProcessableFoldersButton());
layout.setSpacing(true);
return layout;
}
private Component buildExcludedFolderComponent(List<FolderDetailVO> folders) {
Label header = new Label($("DecommissioningListView.excludedFolders"));
header.addStyleName(ValoTheme.LABEL_H2);
excludedFolders = buildFolderTable(folders, false);
VerticalLayout layout = new VerticalLayout(header, excludedFolders, buildOrderExcludedFoldersButton());
layout.setSpacing(true);
return layout;
}
private BaseTable buildFolderTable(List<FolderDetailVO> folders, boolean containerizable) {
BeanItemContainer<FolderDetailVO> container = new BeanItemContainer<>(FolderDetailVO.class, folders);
BaseTable table = new BaseTable("DecommissioningListView.folderTable", $("DecommissioningListView.folderDetails", container.size()), container);
table.setPageLength(container.size());
table.setWidth("100%");
return new FolderDetailTableGenerator(presenter, this, containerizable)
.withExtension(presenter.getFolderDetailTableExtension())
.displayingRetentionRule(presenter.shouldDisplayRetentionRuleInDetails())
.displayingCategory(presenter.shouldDisplayCategoryInDetails())
.displayingSort(presenter.shouldDisplaySort())
.displayingValidation(presenter.shouldDisplayValidation())
.displayingOrderNumber(true)
.attachTo(table);
}
private Component buildContainerComponent(List<DecomListContainerDetail> containerDetails) {
Label header = new Label($("DecommissioningListView.containers"));
header.addStyleName(ValoTheme.LABEL_H2);
containerTable = buildContainerTable(containerDetails);
VerticalLayout layout = new VerticalLayout(header, containerTable);
layout.setSpacing(true);
return layout;
}
private BaseTable buildContainerTable(List<DecomListContainerDetail> containers) {
BeanItemContainer<DecomListContainerDetail> container = new BeanItemContainer<>(
DecomListContainerDetail.class, containers);
BaseTable table = new BaseTable("DecommissioningListView.containerDetails", $("DecommissioningListView.containerDetails", container.size()), container);
table.setPageLength(container.size());
table.setWidth("100%");
return new ContainerDetailTableGenerator(presenter).attachTo(table);
}
public ComboBox buildContainerSelector() {
ComboBox container = new ComboBox();
container.setContainerDataSource(containerVOs);
container.setItemCaptionPropertyId("caption");
container.setNullSelectionAllowed(false);
return container;
}
public FolderDetailVO getPackageableFolder(String folderId) {
FolderDetailVO folder = null;
for (Object itemId : packageableFolders.getItemIds()) {
FolderDetailVO currentFolder = (FolderDetailVO) itemId;
if(folderId.equals((currentFolder.getFolderId()))) {
folder = currentFolder;
break;
}
}
return folder;
}
public ContainerVO getContainer(ContainerRecord containerRecord) {
ContainerVO containerVO = null;
for (Object itemId : containerVOs.getItemIds()) {
ContainerVO currentContainer = (ContainerVO) itemId;
if(containerRecord.getId().equals((currentContainer.getId()))) {
containerVO = currentContainer;
break;
}
}
if(containerVO == null) {
containerVO = new ContainerVO(containerRecord.getId(), containerRecord.getTitle(), containerRecord.getAvailableSize());
}
return containerVO;
}
public ContainerVO getContainer(ContainerVO containerRecord) {
ContainerVO containerVO = null;
for (Object itemId : containerVOs.getItemIds()) {
ContainerVO currentContainer = (ContainerVO) itemId;
if(containerRecord.getId().equals((currentContainer.getId()))) {
containerVO = currentContainer;
break;
}
}
if(containerVO == null) {
containerVO = new ContainerVO(containerRecord.getId(), containerRecord.getCaption(), containerRecord.getAvailableSize());
}
return containerVO;
}
public void addUpdateContainer(ContainerVO containerVO, DecomListContainerDetail newContainerDetail) {
boolean wasFound = false;
if(containerVO != null) {
for(int i = 0; i < containerVOs.getItemIds().size(); i++) {
if(containerVOs.getIdByIndex(i).getId().equals(containerVO.getId())) {
containerVOs.addBean(containerVO);
if(containerComboBox != null && containerComboBox.getValue().equals(containerVOs.getIdByIndex(i))) {
containerComboBox.setValue(containerVO);
}
containerVOs.removeItem(containerVOs.getIdByIndex(i));
wasFound = true;
break;
}
}
if(!wasFound) {
containerVOs.addItem(containerVO);
presenter.addContainerToDecommissioningList(containerVO);
newContainerDetail = presenter.getContainerDetail(containerVO.getId());
}
addContainerToComponent(newContainerDetail, containerTable, containerComponent);
}
}
}