001/* 002 * (C) Copyright 2006-2011 Nuxeo SA (http://nuxeo.com/) and others. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 * 016 * Contributors: 017 * Florent Guillaume 018 */ 019package org.nuxeo.ecm.core.storage.sql.management; 020 021import java.util.List; 022 023import org.nuxeo.ecm.core.blob.DocumentBlobManager; 024import org.nuxeo.ecm.core.blob.binary.BinaryManagerStatus; 025import org.nuxeo.ecm.core.repository.RepositoryService; 026import org.nuxeo.ecm.core.storage.sql.RepositoryManagement; 027import org.nuxeo.ecm.core.storage.sql.coremodel.SQLRepositoryService; 028import org.nuxeo.runtime.api.Framework; 029 030/** 031 * An MBean to manage SQL storage repositories. 032 */ 033public class SQLRepositoryStatus implements SQLRepositoryStatusMBean { 034 035 protected static List<RepositoryManagement> getRepositories() { 036 SQLRepositoryService sqlRepositoryService = Framework.getService(SQLRepositoryService.class); 037 return sqlRepositoryService.getRepositories(); 038 } 039 040 @Override 041 public String listActiveSessions() { 042 StringBuilder sb = new StringBuilder(); 043 sb.append("Actives sessions for SQL repositories:<br />"); 044 for (RepositoryManagement repository : getRepositories()) { 045 sb.append("<b>").append(repository.getName()).append("</b>: "); 046 sb.append(getActiveSessionsCount()); 047 sb.append("<br />"); 048 } 049 return sb.toString(); 050 } 051 052 @Override 053 public int getActiveSessionsCount() { 054 RepositoryService repositoryService = Framework.getService(RepositoryService.class); 055 int count = 0; 056 for (RepositoryManagement repository : getRepositories()) { 057 count += repositoryService.getActiveSessionsCount(repository.getName()); 058 } 059 return count; 060 } 061 062 @Override 063 public String clearCaches() { 064 StringBuilder sb = new StringBuilder(); 065 sb.append("Cleared cached objects for SQL repositories:<br />"); 066 for (RepositoryManagement repository : getRepositories()) { 067 sb.append("<b>").append(repository.getName()).append("</b>: "); 068 sb.append(repository.clearCaches()); 069 sb.append("<br />"); 070 } 071 return sb.toString(); 072 } 073 074 @Override 075 public long getCachesSize() { 076 long size = 0; 077 for (RepositoryManagement repository : getRepositories()) { 078 size += repository.getCacheSize(); 079 } 080 return size; 081 } 082 083 @Override 084 public String listRemoteSessions() { 085 StringBuilder sb = new StringBuilder(); 086 sb.append("Actives remote session for SQL repositories:<br />"); 087 for (RepositoryManagement repository : getRepositories()) { 088 sb.append("<b>").append(repository.getName()).append("</b>"); 089 sb.append("<br/>"); 090 } 091 return sb.toString(); 092 } 093 094 @Override 095 public BinaryManagerStatus gcBinaries(boolean delete) { 096 return Framework.getService(DocumentBlobManager.class).garbageCollectBinaries(delete); 097 } 098 099 @Override 100 public boolean isBinariesGCInProgress() { 101 return Framework.getService(DocumentBlobManager.class).isBinariesGarbageCollectionInProgress(); 102 } 103 104}