/* * Copyright 2013 JBoss Inc * * Licensed 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.overlord.rtgov.ui.server.services.impl; import java.io.OutputStream; import java.util.Collections; import javax.enterprise.context.ApplicationScoped; import javax.enterprise.inject.Alternative; import javax.inject.Inject; import org.overlord.rtgov.ui.client.model.ResolutionState; import org.overlord.rtgov.ui.client.model.BatchRetryResult; import org.overlord.rtgov.ui.client.model.Constants; import org.overlord.rtgov.ui.client.model.MessageBean; import org.overlord.rtgov.ui.client.model.SituationBean; import org.overlord.rtgov.ui.client.model.SituationResultSetBean; import org.overlord.rtgov.ui.client.model.SituationSummaryBean; import org.overlord.rtgov.ui.client.model.SituationsFilterBean; import org.overlord.rtgov.ui.client.model.UiException; import org.overlord.rtgov.ui.provider.SituationsProvider; import org.overlord.rtgov.ui.server.services.ISituationsServiceImpl; /** * Concrete implementation of the faults service using RTGov situations. * */ @ApplicationScoped @Alternative public class SituationsProviderServiceImpl implements ISituationsServiceImpl { private static final int SITUATIONS_PER_PAGE=10; @Inject private SituationsProvider _provider; /** * Constructor. */ public SituationsProviderServiceImpl() { } /** * @see org.overlord.rtgov.ui.server.services.ISituationsServiceImpl#search(org.overlord.rtgov.ui.client.model.SituationsFilterBean, int, java.lang.String, boolean) */ @Override public SituationResultSetBean search(SituationsFilterBean filters, int page, String sortColumn, final boolean ascending) throws UiException { SituationResultSetBean rval = new SituationResultSetBean(); java.util.List<SituationSummaryBean> situations = _provider.search(filters); int total=situations.size(); // Sort based on column and direction if (sortColumn != null) { java.util.Comparator<SituationSummaryBean> comp=null; if (sortColumn.equals(Constants.SORT_COLID_TIMESTAMP)) { comp = new java.util.Comparator<SituationSummaryBean>() { @Override public int compare(SituationSummaryBean o1, SituationSummaryBean o2) { int ret=o1.getTimestamp().compareTo(o2.getTimestamp()); if (!ascending) { ret = 0 - ret; } return ret; } }; } else if (sortColumn.equals(Constants.SORT_COLID_SUBJECT)) { comp = new java.util.Comparator<SituationSummaryBean>() { @Override public int compare(SituationSummaryBean o1, SituationSummaryBean o2) { int ret=o1.getSubject().compareTo(o2.getSubject()); if (!ascending) { ret = 0 - ret; } return ret; } }; } else if (sortColumn.equals(Constants.SORT_COLID_RESOLUTION_STATE)) { comp = new java.util.Comparator<SituationSummaryBean>() { @Override public int compare(SituationSummaryBean o1, SituationSummaryBean o2) { int ret = o1.getResolutionState().compareTo(o2.getResolutionState()); if (!ascending) { ret = 0 - ret; } return ret; } }; } else if (sortColumn.equals(Constants.SORT_COLID_TYPE)) { comp = new java.util.Comparator<SituationSummaryBean>() { @Override public int compare(SituationSummaryBean o1, SituationSummaryBean o2) { int ret=o1.getType().compareTo(o2.getType()); if (!ascending) { ret = 0 - ret; } return ret; } }; } if (comp != null) { Collections.sort(situations, comp); } } int startIndex=(SITUATIONS_PER_PAGE*(page-1)); if (situations.size() >= startIndex) { // Remove initial entries for (int i=0; i < startIndex; i++) { situations.remove(0); } // Remove trailing entries while (situations.size() > SITUATIONS_PER_PAGE) { situations.remove(SITUATIONS_PER_PAGE); } } else { situations.clear(); } rval.setSituations(situations); rval.setItemsPerPage(SITUATIONS_PER_PAGE); rval.setStartIndex((page-1)*SITUATIONS_PER_PAGE); rval.setTotalResults(total); return (rval); } /** * @see org.overlord.rtgov.ui.server.services.ISituationsServiceImpl#getService(java.lang.String) */ @Override public SituationBean get(String situationId) throws UiException { return (_provider.getSituation(situationId)); } /** * @see org.overlord.rtgov.ui.server.services.ISituationsServiceImpl#resubmit(java.lang.String, java.lang.String) */ @Override public void resubmit(String situationId, String message, String username) throws UiException { SituationBean sb=_provider.getSituation(situationId); // Use retrieved message as potentially contains header properties, so // just overwrite the new content being resubmitted MessageBean mb=sb.getMessage(); mb.setContent(message); _provider.resubmit(situationId, mb, username); } /** * @see org.overlord.rtgov.ui.server.services.ISituationsServiceImpl#resubmit(SituationsFilterBean) */ @Override public BatchRetryResult resubmit(SituationsFilterBean situationsFilterBean, String username) throws UiException { return _provider.resubmit(situationsFilterBean, username); } /** * @see org.overlord.rtgov.ui.server.services.ISituationsServiceImpl#getResubmitFailures(String, int, java.lang.String, boolean) */ @Override public SituationResultSetBean getResubmitFailures(String situationId, int page, String sortColumn, final boolean ascending) throws UiException { SituationResultSetBean rval = new SituationResultSetBean(); java.util.List<SituationSummaryBean> situations = _provider.getResubmitFailures(situationId); int total=situations.size(); // Sort based on column and direction if (sortColumn != null) { java.util.Comparator<SituationSummaryBean> comp=null; if (sortColumn.equals(Constants.SORT_COLID_TIMESTAMP)) { comp = new java.util.Comparator<SituationSummaryBean>() { @Override public int compare(SituationSummaryBean o1, SituationSummaryBean o2) { int ret=o1.getTimestamp().compareTo(o2.getTimestamp()); if (!ascending) { ret = 0 - ret; } return ret; } }; } else if (sortColumn.equals(Constants.SORT_COLID_SUBJECT)) { comp = new java.util.Comparator<SituationSummaryBean>() { @Override public int compare(SituationSummaryBean o1, SituationSummaryBean o2) { int ret=o1.getSubject().compareTo(o2.getSubject()); if (!ascending) { ret = 0 - ret; } return ret; } }; } else if (sortColumn.equals(Constants.SORT_COLID_RESOLUTION_STATE)) { comp = new java.util.Comparator<SituationSummaryBean>() { @Override public int compare(SituationSummaryBean o1, SituationSummaryBean o2) { int ret = o1.getResolutionState().compareTo(o2.getResolutionState()); if (!ascending) { ret = 0 - ret; } return ret; } }; } else if (sortColumn.equals(Constants.SORT_COLID_TYPE)) { comp = new java.util.Comparator<SituationSummaryBean>() { @Override public int compare(SituationSummaryBean o1, SituationSummaryBean o2) { int ret=o1.getType().compareTo(o2.getType()); if (!ascending) { ret = 0 - ret; } return ret; } }; } if (comp != null) { Collections.sort(situations, comp); } } int startIndex=(SITUATIONS_PER_PAGE*(page-1)); if (situations.size() >= startIndex) { // Remove initial entries for (int i=0; i < startIndex; i++) { situations.remove(0); } // Remove trailing entries while (situations.size() > SITUATIONS_PER_PAGE) { situations.remove(SITUATIONS_PER_PAGE); } } else { situations.clear(); } rval.setSituations(situations); rval.setItemsPerPage(SITUATIONS_PER_PAGE); rval.setStartIndex((page-1)*SITUATIONS_PER_PAGE); rval.setTotalResults(total); return (rval); } @Override public void assign(String situationId, String userName) throws UiException { _provider.assign(situationId, userName); } @Override public void unassign(String situationId) throws UiException { _provider.unassign(situationId); } @Override public void updateResolutionState(String situationId, ResolutionState resolutionState) throws UiException { _provider.updateResolutionState(situationId, resolutionState); } @Override public void export(SituationsFilterBean situationsFilterBean, OutputStream outputStream) { _provider.export(situationsFilterBean, outputStream); } @Override public int delete(SituationsFilterBean situationsFilterBean) throws UiException { return _provider.delete(situationsFilterBean); } }