/* * RHQ Management Platform * Copyright (C) 2005-2008 Red Hat, Inc. * All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation version 2 of the License. * * 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.rhq.enterprise.gui.content; import javax.faces.application.FacesMessage; import javax.faces.model.SelectItem; import org.rhq.core.clientapi.agent.configuration.ConfigurationUtility; import org.rhq.core.domain.auth.Subject; import org.rhq.core.domain.configuration.definition.ConfigurationDefinition; import org.rhq.core.domain.content.ContentSource; import org.rhq.core.domain.content.DownloadMode; import org.rhq.core.gui.util.FacesContextUtility; import org.rhq.core.util.exception.ThrowableUtil; import org.rhq.enterprise.gui.util.EnterpriseFacesContextUtility; import org.rhq.enterprise.server.content.ContentSourceManagerLocal; import org.rhq.enterprise.server.util.LookupUtil; public class ContentProviderDetailsUIBean { private ContentSource contentSource; public ContentSource getContentSource() { loadContentSource(); return this.contentSource; } public String edit() { return "edit"; } public String save() { Subject subject = EnterpriseFacesContextUtility.getSubject(); ContentSourceManagerLocal manager = LookupUtil.getContentSourceManager(); try { manager.updateContentSource(subject, contentSource, true); FacesContextUtility.addMessage(FacesMessage.SEVERITY_INFO, "The content source [" + contentSource.getName() + "] has been updated."); } catch (Exception e) { FacesContextUtility.addMessage(FacesMessage.SEVERITY_WARN, "Failed to update content source [" + contentSource.getName() + "]", e); } return "success"; } public String cancel() { return "success"; } public String test() { ContentSourceManagerLocal manager = LookupUtil.getContentSourceManager(); try { manager.testContentSourceConnection(this.contentSource.getId()); FacesContextUtility.addMessage(FacesMessage.SEVERITY_INFO, "Test passed - the remote repository for [" + this.contentSource.getName() + "] is available."); } catch (Exception e) { FacesContextUtility.addMessage(FacesMessage.SEVERITY_WARN, "Test failed - failed to connect to the remote repository for [" + this.contentSource.getName() + "] - check the configuration and make sure the remote repository is up and reachable. Details: " + ThrowableUtil.getAllMessages(e)); } return "success"; } public String sync() { // Test the content source connection before proceeding. ContentSourceManagerLocal contentSourceManager = LookupUtil.getContentSourceManager(); try { contentSourceManager.testContentSourceConnection(this.contentSource.getId()); } catch (Exception e) { FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR, "Failed to connect to the remote repository for [" + this.contentSource.getName() + "] - check the configuration and make sure the remote repository is up and reachable. Details: " + ThrowableUtil.getAllMessages(e)); return "success"; } Subject subject = EnterpriseFacesContextUtility.getSubject(); try { contentSourceManager.synchronizeAndLoadContentSource(subject, this.contentSource.getId()); FacesContextUtility.addMessage(FacesMessage.SEVERITY_INFO, "Synchronizing content source [" + this.contentSource.getName() + "] now."); } catch (Exception e) { FacesContextUtility.addMessage(FacesMessage.SEVERITY_WARN, "Failed to start the synchronization process for [" + this.contentSource.getName() + "]", e); } return "success"; } public SelectItem[] getDownloadModes() { DownloadMode[] modes = DownloadMode.values(); SelectItem[] items = new SelectItem[modes.length]; int i = 0; for (DownloadMode mode : modes) { items[i++] = new SelectItem(mode.name()); } return items; } public String getSelectedDownloadMode() { return this.contentSource.getDownloadMode().name(); } public void setSelectedDownloadMode(String mode) { this.contentSource.setDownloadMode(DownloadMode.valueOf(mode)); } public ConfigurationDefinition getContentSourceTypeConfigurationDefinition() { loadContentSource(); return this.contentSource.getContentSourceType().getContentSourceConfigurationDefinition(); } private void loadContentSource() { Integer id = FacesContextUtility.getRequiredRequestParameter("id", Integer.class); if (this.contentSource == null || (this.contentSource != null && this.contentSource.getId() != id)) { Subject subject = EnterpriseFacesContextUtility.getSubject(); ContentSourceManagerLocal manager = LookupUtil.getContentSourceManager(); this.contentSource = manager.getContentSource(subject, id); // make sure we load the full CST including the config def String cstName = this.contentSource.getContentSourceType().getName(); this.contentSource.setContentSourceType(manager.getContentSourceType(cstName)); ConfigurationUtility.normalizeConfiguration(this.contentSource.getConfiguration(), this.contentSource .getContentSourceType().getContentSourceConfigurationDefinition()); } } public String finishAddMap() { FacesContextUtility.addMessage(FacesMessage.SEVERITY_INFO, "Map added."); return "success"; } public String finishEditMap() { FacesContextUtility.addMessage(FacesMessage.SEVERITY_INFO, "Map updated."); return "success"; } }