/* * Copyright 2005-2008 Pentaho Corporation. All rights reserved. * This program is free software; you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software * Foundation. * * You should have received a copy of the GNU Lesser General Public License along with this * program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html * or from the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * Copyright 2008 - 2009 Pentaho Corporation. All rights reserved. * * Created * @author Steven Barkdull */ package org.pentaho.pac.client.services; import java.util.HashMap; import org.pentaho.gwt.widgets.client.dialogs.MessageDialogBox; import org.pentaho.pac.client.PacServiceAsync; import org.pentaho.pac.client.PacServiceFactory; import org.pentaho.pac.client.common.ui.GroupBox; import org.pentaho.pac.client.common.ui.dialog.MessageDialog; import org.pentaho.pac.client.i18n.Messages; import org.pentaho.pac.client.utils.ExceptionParser; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.ClickListener; import com.google.gwt.user.client.ui.FlexTable; import com.google.gwt.user.client.ui.HasVerticalAlignment; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; public class AdminServicesPanel extends VerticalPanel implements ClickListener { Button refreshSolutionRepositoryBtn = new Button(Messages.getString("refreshSolutionRepository")); //$NON-NLS-1$ Button cleanRepositoryBtn = new Button(Messages.getString("removeStaleContent")); //$NON-NLS-1$ Button clearMondrianSchemaCacheBtn = new Button(Messages.getString("purgeMondrianSchemaCache")); //$NON-NLS-1$ Button scheduleRepositoryCleaningBtn = new Button(Messages.getString("scheduleDailyRepositoryCleaning")); //$NON-NLS-1$ Button resetRepositoryBtn = new Button(Messages.getString("restoreDefaultFilePermissions")); //$NON-NLS-1$ Button refreshSystemSettingsBtn = new Button(Messages.getString("refreshSystemSettings")); //$NON-NLS-1$ Button executeGlobalActionsBtn = new Button(Messages.getString("executeGlobalActions")); //$NON-NLS-1$ Button refreshReportingMetadataBtn = new Button(Messages.getString("refreshReportingMetadata")); //$NON-NLS-1$ FlexTable flexTable = new FlexTable(); HashMap<Integer, FlexTable> groupMap = new HashMap<Integer, FlexTable>(); public AdminServicesPanel() { flexTable.setCellSpacing(10); add(flexTable); addGroupBox(0, 0, 0, Messages.getString("contentRepositoryCleaning")); //$NON-NLS-1$ addGroupBox(1, 0, 1, Messages.getString("solutionRepository")); //$NON-NLS-1$ addGroupBox(2, 1, 0, Messages.getString("refreshBiServer")); //$NON-NLS-1$ flexTable.getColumnFormatter().setWidth(0, "50%"); //$NON-NLS-1$ flexTable.getColumnFormatter().setWidth(1, "50%");//$NON-NLS-1$ addServiceButton(0, 0, 1, cleanRepositoryBtn); addServiceButton(0, 0, 0, scheduleRepositoryCleaningBtn); addServiceButton(1, 0, 0, refreshSolutionRepositoryBtn); addServiceButton(1, 0, 1, resetRepositoryBtn); addServiceButton(2, 0, 0, refreshSystemSettingsBtn); addServiceButton(2, 0, 1, executeGlobalActionsBtn); addServiceButton(2, 1, 0, refreshReportingMetadataBtn); addServiceButton(2, 1, 1, clearMondrianSchemaCacheBtn); } protected void addGroupBox(int groupId, int row, int column, String title) { FlexTable groupFlexTable = new FlexTable(); groupFlexTable.setWidth("100%"); //$NON-NLS-1$ groupFlexTable.setCellSpacing(5); GroupBox groupBox = new GroupBox(title); groupBox.setContent(groupFlexTable); groupBox.setWidth("100%"); //$NON-NLS-1$ groupBox.setHeight("100%"); //$NON-NLS-1$ flexTable.getCellFormatter().setHeight(row, column, "100%"); //$NON-NLS-1$ flexTable.setWidget(row, column, groupBox); groupBox.setVerticalAlignment(HasVerticalAlignment.ALIGN_TOP); groupMap.put(new Integer(groupId), groupFlexTable); } protected void addServiceButton(int parentGroupId, int rowWithinGroup, int columnWithinGroup, Button serviceButton) { FlexTable groupFlexTable = groupMap.get(new Integer(parentGroupId)); if (groupFlexTable != null) { groupFlexTable.setWidget(rowWithinGroup, columnWithinGroup, serviceButton); serviceButton.setWidth("100%"); //$NON-NLS-1$ serviceButton.addClickListener(this); } } protected void runService(final Button serviceButton) { AsyncCallback<String> callback = new AsyncCallback<String>() { public void onSuccess(String result) { MessageDialogBox messageDialog = new MessageDialogBox(Messages.getString("services"), result, false, false, true); //$NON-NLS-1$ messageDialog.center(); messageDialog.show(); serviceButton.setEnabled(true); } public void onFailure(Throwable caught) { MessageDialogBox messageDialog = new MessageDialogBox(ExceptionParser.getErrorHeader(caught.getMessage()), ExceptionParser.getErrorMessage(caught.getMessage(), caught.getMessage()), false, false, true); messageDialog.center(); messageDialog.show(); serviceButton.setEnabled(true); } }; // end AsyncCallback PacServiceAsync pacServiceAsync = PacServiceFactory.getPacService(); serviceButton.setEnabled(false); if (serviceButton == refreshSolutionRepositoryBtn) { pacServiceAsync.refreshSolutionRepository(callback); } else if (serviceButton == cleanRepositoryBtn) { pacServiceAsync.cleanRepository(callback); } else if (serviceButton == clearMondrianSchemaCacheBtn) { pacServiceAsync.clearMondrianSchemaCache(callback); } else if (serviceButton == scheduleRepositoryCleaningBtn) { pacServiceAsync.scheduleRepositoryCleaning(callback); } else if (serviceButton == resetRepositoryBtn) { pacServiceAsync.resetRepository(callback); } else if (serviceButton == refreshSystemSettingsBtn) { pacServiceAsync.refreshSystemSettings(callback); } else if (serviceButton == executeGlobalActionsBtn) { pacServiceAsync.executeGlobalActions(callback); } else if (serviceButton == refreshReportingMetadataBtn) { pacServiceAsync.refreshReportingMetadata(callback); } } public void onClick(final Widget sender) { runService((Button)sender); } }