blob: 05a3d368c1a7fa0356af18b09b54889ec4c882c2 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.stratos.theme.mgt.services;
import org.wso2.carbon.core.AbstractAdmin;
import org.wso2.carbon.registry.core.Registry;
import org.wso2.carbon.registry.core.session.UserRegistry;
import org.wso2.carbon.registry.core.Collection;
import org.wso2.carbon.registry.core.Resource;
import org.apache.stratos.theme.mgt.util.ThemeUtil;
import org.wso2.carbon.registry.resource.beans.*;
import org.wso2.carbon.registry.resource.services.utils.*;
import org.wso2.carbon.registry.common.ResourceData;
import org.wso2.carbon.registry.common.utils.RegistryUtil;
import javax.activation.DataHandler;
import java.util.ArrayList;
import java.util.Stack;
public class ThemeMgtService extends AbstractAdmin {
public ResourceTreeEntryBean getResourceTreeEntry(String resourcePath) throws Exception {
UserRegistry themeRegistry = ThemeUtil.getThemeRegistry(getGovernanceSystemRegistry());
return GetResourceTreeEntryUtil.getResourceTreeEntry(resourcePath, themeRegistry);
}
public ContentBean getContentBean(String path) throws Exception {
UserRegistry themeRegistry = ThemeUtil.getThemeRegistry(getGovernanceSystemRegistry());
return ContentUtil.getContent(path, themeRegistry);
}
public CollectionContentBean getCollectionContent(String path) throws Exception {
UserRegistry themeRegistry = ThemeUtil.getThemeRegistry(getGovernanceSystemRegistry());
return ContentUtil.getCollectionContent(path, themeRegistry);
}
public ResourceData[] getResourceData(String[] paths) throws Exception {
UserRegistry themeRegistry = ThemeUtil.getThemeRegistry(getGovernanceSystemRegistry());
return ContentUtil.getResourceData(paths, themeRegistry);
}
public String addCollection(
String parentPath, String collectionName, String mediaType, String description)
throws Exception {
UserRegistry registry = ThemeUtil.getThemeRegistry(getGovernanceSystemRegistry());
return AddCollectionUtil.process(parentPath, collectionName, mediaType, description, registry);
}
public void addResource(String path, String mediaType, String description, DataHandler content,
String symlinkLocation, String tenantPass)
throws Exception {
UserRegistry registry = ThemeUtil.getThemeRegistry(getGovernanceSystemRegistry());
if (registry == null) {
registry = ThemeUtil.getThemeRegistryFromTenantPass(tenantPass);
}
AddResourceUtil.addResource(path, mediaType, description, content, symlinkLocation, registry,new String[0][0]);
}
public void importResource(
String parentPath,
String resourceName,
String mediaType,
String description,
String fetchURL,
String symlinkLocation,
String tenantPass) throws Exception {
UserRegistry registry = ThemeUtil.getThemeRegistry(getGovernanceSystemRegistry());
if (registry == null) {
registry = ThemeUtil.getThemeRegistryFromTenantPass(tenantPass);
}
ImportResourceUtil.importResource(parentPath, resourceName, mediaType, description, fetchURL,
symlinkLocation, registry,new String[0][0]);
}
public void addTextResource(
String parentPath,
String fileName,
String mediaType,
String description,
String content) throws Exception {
UserRegistry registry = ThemeUtil.getThemeRegistry(getGovernanceSystemRegistry());
AddTextResourceUtil.addTextResource(parentPath, fileName, mediaType, description, content, registry);
}
public MetadataBean getMetadata(String path) throws Exception {
RegistryUtil.setSessionResourcePath(path);
UserRegistry registry = ThemeUtil.getThemeRegistry(getGovernanceSystemRegistry());
return MetadataPopulator.populate(path, registry);
}
public String getSessionResourcePath() throws Exception {
return RegistryUtil.getSessionResourcePath();
}
public String getTextContent(String path) throws Exception {
UserRegistry registry = ThemeUtil.getThemeRegistry(getGovernanceSystemRegistry());
return GetTextContentUtil.getTextContent(path, registry);
}
public void updateTextContent(String resourcePath, String contentText) throws Exception {
UserRegistry registry = ThemeUtil.getThemeRegistry(getGovernanceSystemRegistry());
UpdateTextContentUtil.updateTextContent(resourcePath, contentText, registry);
}
public ContentDownloadBean getContentDownloadBean(String path) throws Exception {
UserRegistry registry = ThemeUtil.getThemeRegistry(getGovernanceSystemRegistry());
return GetDownloadContentUtil.getContentDownloadBean(path, registry);
}
public void renameResource(
String parentPath, String oldResourcePath, String newResourceName)
throws Exception {
UserRegistry registry = ThemeUtil.getThemeRegistry(getGovernanceSystemRegistry());
RenameResourceUtil.renameResource(parentPath, oldResourcePath, newResourceName, registry);
}
public void delete(String pathToDelete) throws Exception {
UserRegistry registry = ThemeUtil.getThemeRegistry(getGovernanceSystemRegistry());
DeleteUtil.process(pathToDelete, registry);
}
public String[] getAllPaths() throws Exception {
UserRegistry registry = ThemeUtil.getThemeRegistry(getGovernanceSystemRegistry());
// will use a stack in place of calling recurssion
ArrayList<String> paths = new ArrayList<String>();
Stack<Collection> parentCollections = new Stack<Collection>();
Collection rootCollection = (Collection)registry.get("/");
parentCollections.push(rootCollection);
while (!parentCollections.empty()) {
Collection parentCollection = parentCollections.pop();
String[] childs = parentCollection.getChildren();
for (String childPath: childs) {
String pathToAdd = childPath.substring(1);
paths.add(pathToAdd);
Resource resource = registry.get(childPath);
if (resource instanceof Collection) {
Collection c = (Collection)resource;
parentCollections.push(c);
}
}
}
return paths.toArray(new String[paths.size()]);
}
public String[] getAllThemes(String tenantPass) throws Exception {
String[] allThemes = ThemeUtil.getAvailableThemes();
//we are readding the selected theme as the first element
String currentTheme = ThemeUtil.getCurrentTheme(tenantPass, (UserRegistry) getGovernanceSystemRegistryIfLoggedIn());
String[] returnVal = new String[allThemes.length + 1];
returnVal[0] = currentTheme;
for (int i = 0; i < allThemes.length; i ++) {
returnVal[i + 1] = allThemes[i];
}
return returnVal;
}
public void applyTheme(String themeName, String tenantPass) throws Exception {
ThemeUtil.applyTheme(themeName, tenantPass, (UserRegistry) getGovernanceSystemRegistryIfLoggedIn());
ThemeUtil.removeTheUUID(tenantPass);
}
private Registry getGovernanceSystemRegistryIfLoggedIn() {
UserRegistry tempRegistry = (UserRegistry)getConfigUserRegistry();
if (tempRegistry != null) {
try {
return ThemeUtil.getRegistryService().getGovernanceSystemRegistry(
tempRegistry.getTenantId());
} catch (Exception ignored) {
// The Registry service should not fail if the above if condition holds.
return null;
}
}
return null;
}
}