Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ro.oneandone.pccdashboard.client.mvp.monitoredprocessflowphases;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.Map.Entry;
- import net.customware.gwt.dispatch.client.DispatchAsync;
- import ro.oneandone.pcc.dashboard.client.dto.DashboardKpiStatus;
- import ro.oneandone.pcc.dashboard.client.dto.PairValueDTO;
- import ro.oneandone.pcc.dashboard.client.dto.ProcessFlowDTO;
- import ro.oneandone.pcc.dashboard.client.dto.ProcessFlowKpiDTO;
- import ro.oneandone.pcc.dashboard.client.dto.ProcessFlowKpisDTO;
- import ro.oneandone.pcc.dashboard.client.util.DBConstants;
- import ro.oneandone.pccdashboard.client.ClientFactory;
- import ro.oneandone.pccdashboard.client.PCCDashboard;
- import ro.oneandone.pccdashboard.client.Session;
- import ro.oneandone.pccdashboard.client.common.CookiesUtils;
- import ro.oneandone.pccdashboard.client.common.CookiesUtils.PfFavoriteStatus;
- import ro.oneandone.pccdashboard.client.components.TextButton;
- import ro.oneandone.pccdashboard.client.components.TextImage;
- import ro.oneandone.pccdashboard.client.components.TextLabel;
- import ro.oneandone.pccdashboard.client.components.WidgetHasText;
- import ro.oneandone.pccdashboard.client.components.advancedtable.AdvancedTreeTable;
- import ro.oneandone.pccdashboard.client.components.advancedtable.FiltrableTableColumn;
- import ro.oneandone.pccdashboard.client.components.advancedtable.Sortable;
- import ro.oneandone.pccdashboard.client.components.advancedtable.SortableTableColumn;
- import ro.oneandone.pccdashboard.client.components.advancedtable.SortingType;
- import ro.oneandone.pccdashboard.client.components.advancedtable.TableColumn;
- import ro.oneandone.pccdashboard.client.components.advancedtable.TreeMetadata;
- import ro.oneandone.pccdashboard.client.mvp.AbstractPlace;
- import ro.oneandone.pccdashboard.client.mvp.MvpUtils;
- import ro.oneandone.pccdashboard.client.mvp.SqlCriteriaUtils;
- import ro.oneandone.pccdashboard.client.mvp.policyviolations.PolicyViolationsDetailsPlace;
- import ro.oneandone.pccdashboard.client.mvp.processflowkpidetails.ProcessFlowKPIDetailsPlace;
- import ro.oneandone.pccdashboard.client.mvp.processflowphasemonitoringdetails.ProcessFlowPhaseMonitoringDetailsPlace;
- import ro.oneandone.pccdashboard.client.mvp.processinstancesexceededtargetvalues.ProcessInstancesExceededTargetValuesPlace;
- import ro.oneandone.pccdashboard.shared.ExportType;
- import ro.oneandone.pccdashboard.shared.criteria.DefaultSqlCriteria;
- import ro.oneandone.pccdashboard.shared.criteria.Order;
- import ro.oneandone.pccdashboard.shared.criteria.SqlCriteria;
- import ro.oneandone.pccdashboard.shared.model.monitoredprocessflowphases.MonitoredProcessFlowPhasesModelConstants;
- import ro.oneandone.pccdashboard.shared.model.processflowmetadata.ProcessFlowMetadata;
- import ro.oneandone.pccdashboard.shared.rpc.monitoredprocessflowphases.GetRowsCountMonitoredProcessFlowsModel;
- import ro.oneandone.pccdashboard.shared.rpc.monitoredprocessflowphases.GetRowsCountMonitoredProcessFlowsModelResult;
- import ro.oneandone.pccdashboard.shared.rpc.monitoredprocessflowphases.PaginationMonitoredProcessFlowsModel;
- import ro.oneandone.pccdashboard.shared.rpc.monitoredprocessflowphases.RetrieveMonitoredProcessFlowPhasesModel;
- import ro.oneandone.pccdashboard.shared.rpc.monitoredprocessflowphases.RetrieveMonitoredProcessFlowPhasesModelResult;
- import ro.oneandone.pccdashboard.shared.rpc.monitoredprocessflowphases.RetrieveMonitoredProcessFlowsModelResult;
- import com.google.gwt.core.client.GWT;
- import com.google.gwt.event.dom.client.ClickEvent;
- import com.google.gwt.event.dom.client.ClickHandler;
- import com.google.gwt.event.dom.client.MouseDownEvent;
- import com.google.gwt.event.dom.client.MouseDownHandler;
- import com.google.gwt.event.logical.shared.ValueChangeEvent;
- import com.google.gwt.event.logical.shared.ValueChangeHandler;
- import com.google.gwt.place.shared.Place;
- import com.google.gwt.resources.client.ImageResource;
- import com.google.gwt.user.client.Window;
- import com.google.gwt.user.client.rpc.AsyncCallback;
- import com.google.gwt.user.client.rpc.StatusCodeException;
- import com.google.gwt.user.client.ui.Button;
- import com.google.gwt.user.client.ui.CheckBox;
- import com.google.gwt.user.client.ui.HTML;
- import com.google.gwt.user.client.ui.HasHorizontalAlignment;
- import com.google.gwt.user.client.ui.HorizontalPanel;
- import com.google.gwt.user.client.ui.Image;
- import com.google.gwt.user.client.ui.Label;
- import com.google.gwt.user.client.ui.TextBox;
- public class MonitoredProcessFlowPhasesAdvancedTable extends AdvancedTreeTable {
- private static int COLUMN_INDEX = 1;
- private DispatchAsync dispatcher;
- private ClientFactory clientFactory;
- private ProcessFlowDTO model = new ProcessFlowDTO();
- private SqlCriteria sqlCriteria = new DefaultSqlCriteria();
- private List<WidgetHasText[]> rows;
- private TableColumn[][] columns = new TableColumn[3][10];
- private List<ProcessFlowDTO> rowsData;
- private Map<ProcessFlowDTO, ProcessFlowMetadata> processFlowMetadata;
- private List<Long> processFlowsFavorite;
- private final TextBox processFlowName = new TextBox();
- private Map<RetrieveMonitoredProcessFlowPhasesModel, List<WidgetHasText[]>> cacheChilds = new HashMap<RetrieveMonitoredProcessFlowPhasesModel, List<WidgetHasText[]>>();
- private Map<Long, Map<String, TextImage>> favoriteRelations = new HashMap<Long, Map<String, TextImage>>();
- {
- HorizontalPanel container = new HorizontalPanel();
- Label searchForLabel = new Label("Search for:");
- searchForLabel.setWordWrap(true);
- searchForLabel.setStyleName("search-for-label");
- searchForLabel.setWidth("100%");
- container.add(searchForLabel);
- processFlowName.setWidth("90%");
- container.add(processFlowName);
- final Button apply = new Button("Apply");
- apply.addClickHandler(new ClickHandler() {
- @Override
- public void onClick(ClickEvent event) {
- String value = ((TextBox) processFlowName).getText().trim();
- if (value != null && !"".equals(value.trim())) {
- model.setName(value);
- } else {
- model.setName(null);
- }
- fillProcessFlowFavorites();
- load();
- sqlCriteria.clearCriterion();
- }
- });
- container.setStyleName("horizontal-panel-monitored-pf");
- container.add(apply);
- columns[0][0] = new TableColumn(new Label("Monitored process flow's & phases"));
- columns[0][0].setAlign(HasHorizontalAlignment.ALIGN_LEFT);
- columns[0][0].setWidth(21);
- columns[1][0] = new SortableTableColumn(
- MonitoredProcessFlowPhasesModelConstants.PROCESS_FLOW_PHASE_IDENTIFIER,
- "Process flow phase name",
- MonitoredProcessFlowPhasesModelConstants.PROCESS_FLOW_NAME_NATIVE_SQL_COLUMN_IDENTIFIER,
- new Label("Process flow phase name"));
- columns[1][0].setAlign(HasHorizontalAlignment.ALIGN_LEFT);
- columns[1][0].setWidth(21);
- columns[2][0] = new FiltrableTableColumn(
- MonitoredProcessFlowPhasesModelConstants.PROCESS_FLOW_PHASE_IDENTIFIER,
- "Process flow phase name",
- MonitoredProcessFlowPhasesModelConstants.PROCESS_FLOW_NAME_NATIVE_SQL_COLUMN_IDENTIFIER,
- container);
- columns[2][0].setWidth(21);
- CheckBox favorite = new CheckBox();
- favorite.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
- @Override
- public void onValueChange(ValueChangeEvent<Boolean> event) {
- CookiesUtils.setCookie("SHOW_FAVORITES_ONLY", Boolean.toString(event.getValue()));
- if (event.getValue()) {
- fillProcessFlowFavorites();
- } else {
- processFlowsFavorite = null;
- }
- load();
- }
- });
- favorite.setValue(Boolean.valueOf(CookiesUtils.getCookie("SHOW_FAVORITES_ONLY")));
- Image yellowStarImg = new Image(PCCDashboard.RESOURCES.Yellow_star());
- yellowStarImg.setStyleName("yellow-star-table");
- columns[0][1] = new TableColumn("", "", new Label());
- columns[0][1].setAlign(HasHorizontalAlignment.ALIGN_CENTER);
- columns[0][1].setWidth(3);
- columns[1][1] = new FiltrableTableColumn(
- MonitoredProcessFlowPhasesModelConstants.PROCESS_FLOW_FAVORITE_IDENTIFIER,
- MonitoredProcessFlowPhasesModelConstants.PROCESS_FLOW_FAVORITE_IDENTIFIER,
- MonitoredProcessFlowPhasesModelConstants.PROCESS_FLOW_FAVORITE_NATIVE_SQL_COLUMN_IDENTIFIER,
- favorite);
- columns[1][1].setOnlyImage(true);
- columns[1][1].setWidth(3);
- columns[1][1].setRowSpan(1);
- columns[2][1] = new TableColumn("", "", yellowStarImg);
- columns[2][1].setWidth(3);
- columns[0][2] = new TableColumn(new Label("Process Flow KPI's of last calculation interval"));
- columns[0][2].setColSpan(6);
- columns[0][3] = new TableColumn("","", new Label(""));
- columns[0][4] = new TableColumn("","", new Label(""));
- HTML aggregatedHealthStatusHTML = new HTML("Aggregated<br/>Health<br/>Status");
- columns[1][2] = new TableColumn(
- MonitoredProcessFlowPhasesModelConstants.AGGREGATED_HEALTH_STATUS_IDENTIFIER,
- "Aggregated<br/>Health<br/>Status", aggregatedHealthStatusHTML);
- columns[1][2].setWidth(9);
- columns[1][2].setRowSpan(2);
- columns[1][3] = new TableColumn(
- MonitoredProcessFlowPhasesModelConstants.STARTED_PROCESS_INSTANCES_IDENTIFIER,
- "Started PI's", new Label("Started PI's"));
- columns[1][3].setWidth(9);
- columns[1][3].setRowSpan(2);
- columns[1][4] = new TableColumn(
- MonitoredProcessFlowPhasesModelConstants.ACTIVE_PROCESS_INSTANCES_IDENTIFIER,
- "Active PI's", new Label("Active PI's"));
- columns[1][4].setWidth(9);
- columns[1][4].setRowSpan(2);
- columns[1][5] = new TableColumn(
- MonitoredProcessFlowPhasesModelConstants.AVERAGE_TIME_OF_FINISHED_PROCESS_INSTANCES_IDENTIFIER,
- "Avg t. of<br/>finished PI's", new HTML("Avg t. of<br/>finished PI's"));
- columns[1][5].setWidth(9);
- columns[1][5].setRowSpan(2);
- columns[1][6] = new TableColumn(
- MonitoredProcessFlowPhasesModelConstants.MAX_TIME_OF_FINISHED_PROCESS_INSTANCES_IDENTIFIER,
- "Max t. of<br/>finished PI's", new HTML("Max t. of<br/>finished PI's"));
- columns[1][6].setWidth(9);
- columns[1][6].setRowSpan(2);
- columns[1][7] = new TableColumn(
- MonitoredProcessFlowPhasesModelConstants.CANCELLED_PROCESS_INSTANCES_IDENTIFIER,
- "Cancelled PI's", new Label("Cancelled PI's"));
- columns[1][7].setWidth(9);
- columns[1][7].setRowSpan(2);
- columns[1][8] = new TableColumn(
- MonitoredProcessFlowPhasesModelConstants.PROCESS_INSTANCES_EXCEEDED_TARGET_LINK,
- "PI's exceeded target<br/>values",new HTML("PI's exceeded target<br/>values"));
- columns[1][8].setWidth(11);
- columns[1][8].setRowSpan(2);
- columns[1][9] = new TableColumn(
- MonitoredProcessFlowPhasesModelConstants.POLICY_VIOLATIONS_LINK,
- "Policy violations", new Label("Policy violations"));
- columns[1][9].setWidth(11);
- columns[1][9].setRowSpan(2);
- columns[0][2].setWidth(columns[1][2].getWidth()+columns[1][3].getWidth()+ columns[1][4].getWidth()+ columns[1][5].getWidth()+ columns[1][6].getWidth()+columns[1][7].getWidth());
- columns[0][3].setWidth(columns[1][8].getWidth());
- columns[0][4].setWidth(columns[1][9].getWidth());
- }
- public MonitoredProcessFlowPhasesAdvancedTable() {
- super(true);
- boolean showFavOnly = Boolean.valueOf(CookiesUtils.getCookie("SHOW_FAVORITES_ONLY"));
- if (showFavOnly) {
- this.processFlowsFavorite = CookiesUtils.getProcessFlowsFavorite();
- }
- }
- public MonitoredProcessFlowPhasesAdvancedTable(DispatchAsync dispatcher) {
- this.dispatcher = dispatcher;
- }
- public DispatchAsync getDispatcher() {
- return dispatcher;
- }
- public void setDispatcher(DispatchAsync dispatcher) {
- this.dispatcher = dispatcher;
- }
- public ClientFactory getClientFactory() {
- return clientFactory;
- }
- public void setClientFactory(ClientFactory clientFactory) {
- this.clientFactory = clientFactory;
- }
- @Override
- public void updateRowsCount(final AsyncCallback<Long> completedCallback) {
- if (!this.isWorkOffline()) {
- this.sqlCriteria.clearCriterion();
- SqlCriteriaUtils.toSqlString(this.sqlCriteria, this.model);
- this.sqlCriteria.deactivateOrder();
- this.sqlCriteria.setWithWHERE(false);
- this.sqlCriteria.setStartWithAND(true);
- GetRowsCountMonitoredProcessFlowsModel actionModel = new GetRowsCountMonitoredProcessFlowsModel(
- this.sqlCriteria.toSqlString());
- actionModel.setShowFavoriteOnly(Boolean.valueOf(CookiesUtils.getCookie("SHOW_FAVORITES_ONLY")));
- actionModel.setWebserviceURLpattern(Session.INSTANCE
- .getRowCountProcessFlowsInResultsMetadataWebServiceUrlPattern());
- actionModel.setProcessFlowsFavorite(this.processFlowsFavorite);
- this.dispatcher.execute(actionModel, new AsyncCallback<GetRowsCountMonitoredProcessFlowsModelResult>() {
- public void onFailure(Throwable caught) {
- if (caught instanceof StatusCodeException && ((StatusCodeException) caught).getStatusCode() == 0) {
- // just ignore and continue
- } else {
- completedCallback.onFailure(caught);
- }
- }
- public void onSuccess(GetRowsCountMonitoredProcessFlowsModelResult result) {
- long count = result.getRowsCount();
- setTotalRowsCount(count);
- completedCallback.onSuccess(result.getRowsCount());
- }
- });
- this.sqlCriteria.activateOrder();
- this.sqlCriteria.setWithWHERE(true);
- }
- }
- @Override
- public void getRows() {
- if (!this.isWorkOffline()) {
- this.sqlCriteria.clearCriterion();
- SqlCriteriaUtils.toSqlString(this.sqlCriteria, this.model);
- final Order orderKpiDesc = this.sqlCriteria.get(Order
- .nothing(MonitoredProcessFlowPhasesModelConstants.KPI_VALUE_DESC_NATIVE_SQL_COLUMN_IDENTIFIER));
- this.sqlCriteria.remove(orderKpiDesc);
- final Order orderCompTime = this.sqlCriteria
- .get(Order
- .nothing(MonitoredProcessFlowPhasesModelConstants.COMPUTATION_TIMESTAMP_NATIVE_SQL_COLUMN_IDENTIFIER));
- this.sqlCriteria.remove(orderCompTime);
- this.sqlCriteria.setWithWHERE(false);
- PaginationMonitoredProcessFlowsModel actionModel = new PaginationMonitoredProcessFlowsModel(
- this.sqlCriteria.toSqlString(), this.getCurrentPageStartRow(), this.getCurrentPageRowsCount());
- actionModel.setShowFavoriteOnly(Boolean.valueOf(CookiesUtils.getCookie("SHOW_FAVORITES_ONLY")));
- actionModel
- .setWebserviceURLpattern(Session.INSTANCE.getProcessFlowsInResultsMetadataWebServiceUrlPattern());
- actionModel.setProcessFlowsFavorite(this.processFlowsFavorite);
- actionModel.setProcessFlowMetadata(processFlowMetadata);
- this.dispatcher.execute(actionModel, new AsyncCallback<RetrieveMonitoredProcessFlowsModelResult>() {
- public void onFailure(Throwable caught) {
- if (caught instanceof StatusCodeException && ((StatusCodeException) caught).getStatusCode() == 0) {
- // just ignore and continue
- } else {
- showError("Can not get table rows data from the server.");
- }
- }
- public void onSuccess(RetrieveMonitoredProcessFlowsModelResult result) {
- List<ProcessFlowDTO> rowsData = result.getProcessFlows();
- processFlowMetadata = result.getProcessFlowMetadata();
- int columnsCount = columns[COLUMN_INDEX].length;
- rows = new ArrayList<WidgetHasText[]>(rowsData.size());
- MonitoredProcessFlowPhasesAdvancedTable.this.rowsData = rowsData;
- int row = 0;
- for (ProcessFlowDTO flow : rowsData) {
- rows.add(new WidgetHasText[columnsCount]);
- ProcessFlowMetadata processFlowMetadata = MonitoredProcessFlowPhasesAdvancedTable.this.processFlowMetadata
- .get(flow);
- for (int col = 0; col < columnsCount; col++) {
- String columnName = columns[COLUMN_INDEX][col].getName();
- if (row < rowsData.size()) {
- rows.get(row)[col] = getValue(flow, columnName, processFlowMetadata);
- } else {
- rows.get(row)[col] = new TextLabel("");
- }
- }
- row++;
- }
- setPageRows(rows);
- redrawRows();
- getColumnGrid().setSize(getGrid().getElement().getClientWidth() + "px", "100%");
- }
- });
- this.sqlCriteria.add(orderKpiDesc);
- this.sqlCriteria.add(orderCompTime);
- this.sqlCriteria.setWithWHERE(true);
- } else {
- }
- }
- @Override
- public void onSortColumn(Sortable tableColumn) {
- this.sqlCriteria.remove(Order.nothing(tableColumn.getSqlNativeColumnIdentifier()));
- if (tableColumn.getSortingType() == SortingType.ASC) {
- this.sqlCriteria.add(Order.asc(tableColumn.getSqlNativeColumnIdentifier()));
- } else if (tableColumn.getSortingType() == SortingType.DESC) {
- this.sqlCriteria.add(Order.desc(tableColumn.getSqlNativeColumnIdentifier()));
- }
- }
- private WidgetHasText getValue(final ProcessFlowDTO model, String columnName, final ProcessFlowMetadata processFlowMetadata) {
- if (columnName.equals(MonitoredProcessFlowPhasesModelConstants.PROCESS_FLOW_PHASE_IDENTIFIER)) {
- TextLabel pfLabel = create(model.getName() + " - v." + model.getVersion(), processFlowMetadata, "pointerCursor");
- pfLabel.addClickHandler(new ClickHandler() {
- @Override
- public void onClick(ClickEvent event) {
- Window.open(processFlowMetadata.getSignaviolink(), model.getName(), "");
- }
- });
- return pfLabel;
- } else if (columnName.equals(MonitoredProcessFlowPhasesModelConstants.PROCESS_FLOW_VERSION_IDENTIFIER)) {
- return create(model.getVersion(), processFlowMetadata);
- } else if (columnName.equals(MonitoredProcessFlowPhasesModelConstants.PROCESS_FLOW_FAVORITE_IDENTIFIER)) {
- Long pfId = processFlowMetadata.getId();
- TextImage result = createFavorite(pfId.toString());
- Map<String, TextImage> map = favoriteRelations.get(pfId);
- if(map == null) {
- map = new HashMap<String, TextImage>();
- favoriteRelations.put(pfId, map);
- }
- map.put(pfId.toString(), result);
- return result;
- }
- return new TextLabel("");
- }
- public TextButton getPFPMD(final ProcessFlowKpiDTO model) {
- TextButton result = new TextButton("PFP MD");
- result.setStyleName("navigation-button");
- MvpUtils.disableBrowserContextMenu(result);
- result.addClickHandler(new ClickHandler() {
- @Override
- public void onClick(ClickEvent event) {
- Place place = new ProcessFlowPhaseMonitoringDetailsPlace(model.getProcessFlowPhase(), model
- .getProcessFlowName(), model.getProcessFlowId(), model.getSource(), model.getPfVersion());
- MonitoredProcessFlowPhasesAdvancedTable.this.clientFactory.getPlaceController().goTo(place);
- }
- });
- result.addMouseDownHandler(new MouseDownHandler() {
- @Override
- public void onMouseDown(MouseDownEvent event) {
- if (event.getNativeButton() == 2) {
- AbstractPlace place = new ProcessFlowPhaseMonitoringDetailsPlace(model.getProcessFlowPhase(), model
- .getProcessFlowName(), model.getProcessFlowId(), model.getSource(), model.getPfVersion());
- MvpUtils.showLinkContextualMenu(GWT.getHostPageBaseURL()+place.getParameterLink(), event.getClientX(), event.getClientY());
- }
- }
- });
- return result;
- }
- public TextButton getPIEXC(final ProcessFlowKpisDTO modelParam) {
- TextButton result = new TextButton("PI EXC");
- result.setStyleName("navigation-button");
- MvpUtils.disableBrowserContextMenu(result);
- result.addClickHandler(new ClickHandler() {
- @Override
- public void onClick(ClickEvent event) {
- Place place = new ProcessInstancesExceededTargetValuesPlace(modelParam.getProcessFlowPhase(), modelParam
- .getProcessFlowName(), modelParam.getProcessFlowId(), modelParam.getSource(), modelParam.getPfVersion(), null,
- null, null);
- clientFactory.getPlaceController().goTo(place);
- }
- });
- result.addMouseDownHandler(new MouseDownHandler() {
- @Override
- public void onMouseDown(MouseDownEvent event) {
- if (event.getNativeButton() == 2) {
- AbstractPlace place = new ProcessInstancesExceededTargetValuesPlace(modelParam.getProcessFlowPhase(), modelParam
- .getProcessFlowName(), modelParam.getProcessFlowId(), modelParam.getSource(), modelParam.getPfVersion(), null,
- null, null);
- MvpUtils.showLinkContextualMenu(GWT.getHostPageBaseURL()+place.getParameterLink(), event.getClientX(), event.getClientY());
- }
- }
- });
- return result;
- }
- public TextButton getPV(final ProcessFlowKpisDTO model) {
- TextButton result = new TextButton("PV");
- result.setStyleName("navigation-button");
- result.addClickHandler(new ClickHandler() {
- @Override
- public void onClick(ClickEvent event) {
- Place place = new PolicyViolationsDetailsPlace(model.getProcessFlowPhase(), model.getProcessFlowName(),
- model.getProcessFlowId(), model.getSource(), model.getPfVersion());
- clientFactory.getPlaceController().goTo(place);
- }
- });
- result.addMouseDownHandler(new MouseDownHandler() {
- @Override
- public void onMouseDown(MouseDownEvent event) {
- if (event.getNativeButton() == 2) {
- AbstractPlace place = new PolicyViolationsDetailsPlace(model.getProcessFlowPhase(), model.getProcessFlowName(),
- model.getProcessFlowId(), model.getSource(), model.getPfVersion());
- MvpUtils.showLinkContextualMenu(GWT.getHostPageBaseURL()+place.getParameterLink(), event.getClientX(), event.getClientY());
- }
- }
- });
- return result;
- }
- @Override
- public String getIdentifier(int row) {
- return this.rowsData.get(row).getId().toString();
- }
- public TextBox getProcessFlowName() {
- return processFlowName;
- }
- public ProcessFlowDTO getModel() {
- return model;
- }
- private TextLabel create(String text, ProcessFlowMetadata processFlowMetadata) {
- TextLabel result = new TextLabel(text);
- if (processFlowMetadata != null && !processFlowMetadata.isActive()) {
- result.setStyleName("invalid-process-flow");
- }
- return result;
- }
- private TextLabel create(String text, ProcessFlowMetadata processFlowMetadata, String styleName) {
- TextLabel result = create(text, processFlowMetadata);
- if (styleName != null) {
- result.setStyleName(styleName);
- }
- return result;
- }
- private String[] getFavoritePhaseNames(Long pfId) {
- if (!Boolean.valueOf(CookiesUtils.getCookie("SHOW_FAVORITES_ONLY"))) {
- return null;
- }
- Map<String, TextImage> map = favoriteRelations.get(pfId);
- List<String> list = new ArrayList<String>();
- for(String key : map.keySet()) {
- PfFavoriteStatus status = CookiesUtils.getFavorite(key);
- if(status == PfFavoriteStatus.FULL && key.contains("|")) {
- list.add(key.split("\\|")[1]);
- }
- }
- return list.toArray(new String[]{});
- }
- private ImageResource getStar(PfFavoriteStatus status) {
- ImageResource image = null;
- switch (status) {
- case EMPTY:
- image = PCCDashboard.RESOURCES.White_star();
- break;
- case HALF:
- image = PCCDashboard.RESOURCES.Half_star();
- break;
- case FULL:
- image = PCCDashboard.RESOURCES.Yellow_star();
- break;
- }
- return image;
- }
- private TextImage createFavorite(final String favoriteIdentifier) {
- final TextImage result;
- /* If the phase is not in the cookies list, assign the flow's status to it */
- PfFavoriteStatus status = CookiesUtils.getFavorite(favoriteIdentifier);
- if (status == null) {
- String[] favoriteIdentifiers = favoriteIdentifier.split("\\|");
- if (favoriteIdentifiers.length == 2) {
- String flowId = Long.valueOf(favoriteIdentifiers[0]).toString();
- CookiesUtils.setFavoriteCookie(favoriteIdentifier, status = CookiesUtils.getFavorite(flowId));
- } else {
- CookiesUtils.setFavoriteCookie(favoriteIdentifier, status = PfFavoriteStatus.EMPTY);
- }
- }
- result = new TextImage(getStar(status));
- result.setText(favoriteIdentifier);
- result.addClickHandler(new ClickHandler() {
- @Override
- public void onClick(ClickEvent event) {
- String[] favoriteIdentifiers = favoriteIdentifier.split("\\|");
- String flowId = Long.valueOf(favoriteIdentifiers[0]).toString();
- Map<String, TextImage> map = favoriteRelations.get(Long.valueOf(favoriteIdentifiers[0]));
- if (favoriteIdentifiers.length == 2) { // Process phase
- /* Set star for process phase */
- PfFavoriteStatus phaseStatus = null;
- PfFavoriteStatus flowStatus = CookiesUtils.getFavorite(flowId);
- switch (CookiesUtils.getFavorite(favoriteIdentifier)) {
- case EMPTY:
- phaseStatus = PfFavoriteStatus.FULL;
- break;
- case FULL:
- phaseStatus = PfFavoriteStatus.EMPTY;
- break;
- }
- CookiesUtils.setFavoriteCookie(favoriteIdentifier, phaseStatus);
- result.setResource(getStar(phaseStatus));
- /* Adjust star for process flow */
- int pfFavCount = CookiesUtils.getFavoritePhasesCount(flowId);
- int pfCount = map.size() - 1;
- if(pfCount == pfFavCount) {
- flowStatus = PfFavoriteStatus.FULL;
- } else if (pfFavCount == 0) {
- flowStatus = PfFavoriteStatus.EMPTY;
- } else {
- flowStatus = PfFavoriteStatus.HALF;
- }
- CookiesUtils.setFavoriteCookie(flowId, flowStatus);
- map.get(flowId).setResource(getStar(flowStatus));
- } else if (favoriteIdentifiers.length == 1) { // Process flow
- PfFavoriteStatus status = null;
- /* HALF -> FULL <-> EMPTY */
- switch (CookiesUtils.getFavorite(flowId)) {
- case EMPTY:
- case HALF:
- status = PfFavoriteStatus.FULL;
- break;
- case FULL:
- status = PfFavoriteStatus.EMPTY;
- break;
- }
- CookiesUtils.setFavoriteCookie(flowId, status);
- /* Set the process flow's star for all the map */
- for (Entry<String, TextImage> entry : map.entrySet()) {
- CookiesUtils.setFavoriteCookie(entry.getKey(), status);
- entry.getValue().setResource(getStar(status));
- }
- }
- }
- });
- return result;
- }
- @Override
- public void getChilds(final int row, final AsyncCallback<List<WidgetHasText[]>> response) {
- ProcessFlowDTO processFlowDTO = this.rowsData.get(row);
- final ProcessFlowMetadata processFlowMetadata = this.processFlowMetadata.get(processFlowDTO);
- final RetrieveMonitoredProcessFlowPhasesModel actionModel = new RetrieveMonitoredProcessFlowPhasesModel(
- processFlowDTO.getPfId(), processFlowDTO.getVersion(), processFlowDTO.getSource());
- actionModel.setPhaseNames(getFavoritePhaseNames(processFlowDTO.getId()));
- SqlCriteriaUtils.toSqlString(this.sqlCriteria, this.model);
- this.sqlCriteria.remove(Order
- .nothing(MonitoredProcessFlowPhasesModelConstants.PROCESS_FLOW_NAME_NATIVE_SQL_COLUMN_IDENTIFIER));
- this.sqlCriteria.add(Order
- .asc(MonitoredProcessFlowPhasesModelConstants.PROCESS_FLOW_PHASE_NATIVE_SQL_COLUMN_IDENTIFIER));
- this.sqlCriteria.setWithWHERE(false);
- this.sqlCriteria.clearCriterion();
- actionModel.setCriteria(this.sqlCriteria.toOrderBySqlString());
- this.dispatcher.execute(actionModel, new AsyncCallback<RetrieveMonitoredProcessFlowPhasesModelResult>() {
- public void onFailure(Throwable caught) {
- if (caught instanceof StatusCodeException && ((StatusCodeException) caught).getStatusCode() == 0) {
- // just ignore and continue
- } else {
- showError("Can not get table rows data from the server.");
- }
- }
- public void onSuccess(RetrieveMonitoredProcessFlowPhasesModelResult result) {
- TreeMetadata treeMetadata = getTreeMetadatas().get(new TreeMetadata(getIdentifier(row)))
- .getTreeMetadata();
- ProcessFlowKpisDTO[] rowsData = result.getFlows().toArray(new ProcessFlowKpisDTO[] {});
- if (treeMetadata.isOpen()) {
- return;
- }
- int columnsCount = columns[COLUMN_INDEX].length;
- List<WidgetHasText[]> rows = new ArrayList<WidgetHasText[]>(rowsData.length);
- cacheChilds.put(actionModel, rows);
- for (int row = 0; row < rowsData.length; row++) {
- rows.add(new WidgetHasText[columnsCount]);
- for (int col = 0; col < columnsCount; col++) {
- String columnName = columns[COLUMN_INDEX][col].getName();
- if (row < rowsData.length) {
- rows.get(row)[col] = getValue(rowsData[row], columnName, processFlowMetadata);
- } else {
- rows.get(row)[col] = new TextLabel("");
- }
- }
- }
- response.onSuccess(rows);
- getColumnGrid().setSize(getGrid().getElement().getClientWidth() + "px", "100%");
- }
- });
- this.sqlCriteria.remove(Order
- .nothing(MonitoredProcessFlowPhasesModelConstants.PROCESS_FLOW_PHASE_NATIVE_SQL_COLUMN_IDENTIFIER));
- }
- private WidgetHasText getValue(final ProcessFlowKpisDTO model, String columnName, ProcessFlowMetadata processFlowMetadata) {
- if (columnName
- .equals(MonitoredProcessFlowPhasesModelConstants.PROCESS_FLOW_PHASE_IDENTIFIER)) {
- TextLabel result = create(model.getProcessFlowName() + " - " + model.getProcessFlowPhase(), processFlowMetadata, "pointerCursor");
- result.addClickHandler(new ClickHandler() {
- @Override
- public void onClick(ClickEvent event) {
- Place place = new ProcessFlowPhaseMonitoringDetailsPlace(model.getProcessFlowPhase(), model.getProcessFlowName(),
- model.getProcessFlowId(), model.getSource(), model.getPfVersion());
- clientFactory.getPlaceController().goTo(place);
- }
- });
- MvpUtils.disableBrowserContextMenu(result);
- result.addMouseDownHandler(new MouseDownHandler() {
- @Override
- public void onMouseDown(MouseDownEvent event) {
- event.preventDefault();
- event.stopPropagation();
- if (event.getNativeButton() == 2) {
- AbstractPlace place = new ProcessFlowPhaseMonitoringDetailsPlace(model.getProcessFlowPhase(), model
- .getProcessFlowName(), model.getProcessFlowId().toString(), model.getSource(), model.getPfVersion());
- MvpUtils.showLinkContextualMenu(GWT.getHostPageBaseURL()+place.getParameterLink(), event.getClientX(), event.getClientY());
- }
- }
- });
- return result;
- } else if (columnName
- .equals(MonitoredProcessFlowPhasesModelConstants.PROCESS_FLOW_FAVORITE_IDENTIFIER)) {
- String favoriteKey = processFlowMetadata.getId().toString();
- String identifier = favoriteKey + "|" + model.getProcessFlowPhase();
- TextImage result = createFavorite(identifier);
- Map<String, TextImage> map = this.favoriteRelations.get(processFlowMetadata.getId());
- map.put(identifier, result);
- return result;
- } else if (columnName
- .equals(MonitoredProcessFlowPhasesModelConstants.AGGREGATED_HEALTH_STATUS_IDENTIFIER)) {
- TextLabel result = new TextLabel(model.getComputationTimestamp() == null?null:model.getComputationTimestamp().getValueFormatted());
- result.setStyleName(getStyleName(model.getAggregatedHealthStatusDesc()));
- return result;
- } else if (columnName
- .equals(MonitoredProcessFlowPhasesModelConstants.STARTED_PROCESS_INSTANCES_IDENTIFIER)) {
- return getResultCell(model, model.getStartedProcessInstances(), DBConstants.KPI_PS_001, model.getStartedProcessInstancesDesc());
- } else if (columnName
- .equals(MonitoredProcessFlowPhasesModelConstants.ACTIVE_PROCESS_INSTANCES_IDENTIFIER)) {
- return getResultCell(model, model.getActiveProcessInstances(), DBConstants.KPI_PS_002, model.getActiveProcessInstancesDesc());
- } else if (columnName
- .equals(MonitoredProcessFlowPhasesModelConstants.AVERAGE_TIME_OF_FINISHED_PROCESS_INSTANCES_IDENTIFIER)) {
- return getResultCell(model, model.getAvgTimeOfFinishedProcessInstances(), DBConstants.KPI_PS_005, model.getAvgTimeOfFinishedProcessInstancesDesc());
- } else if (columnName
- .equals(MonitoredProcessFlowPhasesModelConstants.MAX_TIME_OF_FINISHED_PROCESS_INSTANCES_IDENTIFIER)) {
- return getResultCell(model, model.getMaxTimeOfFinishedProcessInstances(), DBConstants.KPI_PS_006, model.getMaxTimeOfFinishedProcessInstancesDesc());
- } else if (columnName
- .equals(MonitoredProcessFlowPhasesModelConstants.CANCELLED_PROCESS_INSTANCES_IDENTIFIER)) {
- return getResultCell(model, model.getCancelledProcessInstances(), DBConstants.KPI_PS_008, model.getCancelledProcessInstancesDesc());
- } else if (columnName
- .equals(MonitoredProcessFlowPhasesModelConstants.PROCESS_INSTANCES_EXCEEDED_TARGET_LINK)) {
- return getPIEXC(model);
- } else if (columnName
- .equals(MonitoredProcessFlowPhasesModelConstants.POLICY_VIOLATIONS_LINK)) {
- return getPV(model);
- }
- return null;
- }
- public void onApplyFavorites() {
- fillProcessFlowFavorites();
- this.cacheChilds.clear();
- }
- private void fillProcessFlowFavorites() {
- if (Boolean.valueOf(CookiesUtils.getCookie("SHOW_FAVORITES_ONLY"))) {
- this.processFlowsFavorite = CookiesUtils.getProcessFlowsFavorite();
- } else {
- this.processFlowsFavorite = null;
- }
- }
- @Override
- public void buttonRefreshClicked() {
- onApplyFavorites();
- super.buttonRefreshClicked();
- }
- @Override
- protected TableColumn[][] getColumns() {
- return columns;
- }
- @Override
- protected TableColumn[] getColumnsRow() {
- return columns[COLUMN_INDEX];
- }
- public int getSortableRow() {
- return COLUMN_INDEX;
- }
- @Override
- public void onReportMarked(ExportType exportType, List<String> ids) {
- }
- private TextLabel getResultCell(final ProcessFlowKpisDTO model, PairValueDTO<Double> pairValueDTO, final String kpiCode, String kpiDesc) {
- TextLabel result = new TextLabel(pairValueDTO == null?null:pairValueDTO.getValueFormatted());
- //result.setStyleName(getStyleName(kpiDesc));
- if (model != null) {
- result.addStyleName("pointerCursor");
- result.addClickHandler(new ClickHandler() {
- @Override
- public void onClick(ClickEvent event) {
- Place place = new ProcessFlowKPIDetailsPlace(
- kpiCode, model.getProcessFlowName(),
- model.getProcessFlowPhase(), model.getPfVersion(), model.getProcessFlowId(),
- model.getSource());
- clientFactory.getPlaceController().goTo(place);
- }
- });
- MvpUtils.disableBrowserContextMenu(result);
- result.addMouseDownHandler(new MouseDownHandler() {
- @Override
- public void onMouseDown(MouseDownEvent event) {
- if (event.getNativeButton() == 2) {
- AbstractPlace place = new ProcessFlowKPIDetailsPlace(
- kpiCode, model.getProcessFlowName(),
- model.getProcessFlowPhase(), model.getPfVersion(), model.getProcessFlowId(),
- model.getSource());
- MvpUtils.showLinkContextualMenu(GWT.getHostPageBaseURL()+place.getParameterLink(), event.getClientX(), event.getClientY());
- }
- }
- });
- }
- return result;
- }
- private String getStyleName(String kpiDesc) {
- if (kpiDesc == null) {
- return "gray-result";
- }
- if (DashboardKpiStatus.isGreenStatus(kpiDesc)) {
- return null;
- } else if (DashboardKpiStatus.isRedStatus(kpiDesc)) {
- return "red-result";
- } else if (DashboardKpiStatus.isYellowStatus(kpiDesc)) {
- return "yellow-result";
- }
- return null;
- }
- }
Add Comment
Please, Sign In to add comment