001/* 002 * Copyright (c) 2006-2011 Nuxeo SA (http://nuxeo.com/) and others. 003 * 004 * All rights reserved. This program and the accompanying materials 005 * are made available under the terms of the Eclipse Public License v1.0 006 * which accompanies this distribution, and is available at 007 * http://www.eclipse.org/legal/epl-v10.html 008 * 009 * Contributors: 010 * Nuxeo - initial API and implementation 011 */ 012 013package org.nuxeo.ecm.core.management.statuses; 014 015import java.util.ArrayList; 016import java.util.HashMap; 017import java.util.List; 018import java.util.Map; 019 020import org.nuxeo.ecm.core.management.api.AdministrativeStatusManager; 021import org.nuxeo.ecm.core.management.api.GlobalAdministrativeStatusManager; 022import org.nuxeo.ecm.core.management.storage.AdministrativeStatusPersister; 023import org.nuxeo.ecm.core.management.storage.DocumentModelStatusPersister; 024 025public class GlobalAdministrativeStatusManagerImpl implements GlobalAdministrativeStatusManager { 026 027 protected final AdministrativeStatusPersister persister = new DocumentModelStatusPersister(); 028 029 protected final Map<String, AdministrativeStatusManager> managers = new HashMap<String, AdministrativeStatusManager>(); 030 031 protected final List<AdministrableServiceDescriptor> descriptors = new ArrayList<AdministrableServiceDescriptor>(); 032 033 protected final Map<String, AdministrableServiceDescriptor> descriptorsByServiceId = new HashMap<String, AdministrableServiceDescriptor>(); 034 035 @Override 036 public String getLocalNuxeoInstanceIdentifier() { 037 return NuxeoInstanceIdentifierHelper.getServerInstanceName(); 038 } 039 040 @Override 041 public AdministrativeStatusManager getStatusManager(String instanceIdentifier) { 042 if (!managers.containsKey(instanceIdentifier)) { 043 managers.put(instanceIdentifier, new AdministrativeStatusManagerImpl(this, persister, instanceIdentifier)); 044 } 045 return managers.get(instanceIdentifier); 046 } 047 048 @Override 049 public List<String> listInstanceIds() { 050 return persister.getAllInstanceIds(); 051 } 052 053 @Override 054 public void setStatus(String serviceIdentifier, String state, String message, String login) { 055 for (String instanceIdentifier : listInstanceIds()) { 056 getStatusManager(instanceIdentifier).setStatus(serviceIdentifier, state, message, login); 057 } 058 } 059 060 @Override 061 public void registerService(AdministrableServiceDescriptor desc) { 062 descriptors.add(desc); 063 descriptorsByServiceId.put(desc.getId(), desc); 064 } 065 066 @Override 067 public List<AdministrableServiceDescriptor> listRegistredServices() { 068 return descriptors; 069 } 070 071 @Override 072 public AdministrableServiceDescriptor getServiceDescriptor(String serviceIdentifier) { 073 return descriptorsByServiceId.get(serviceIdentifier); 074 } 075 076}