/*
* Copyright (c) 2006, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* Licensed 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.wso2.carbon.registry.properties.utils;
import org.wso2.carbon.context.CarbonContext;
import org.wso2.carbon.registry.common.CommonConstants;
import org.wso2.carbon.registry.core.pagination.PaginationContext;
import org.wso2.carbon.registry.core.pagination.PaginationUtils;
import org.wso2.carbon.registry.core.session.UserRegistry;
import org.wso2.carbon.registry.core.exceptions.RegistryException;
import org.wso2.carbon.registry.core.Resource;
import org.wso2.carbon.registry.core.ResourcePath;
import org.wso2.carbon.registry.core.Aspect;
import org.wso2.carbon.registry.core.RegistryConstants;
import org.wso2.carbon.registry.common.utils.UserUtil;
import org.wso2.carbon.registry.properties.beans.PropertiesBean;
import java.util.*;
/**
* Class that hold the logic in populating the property beans.
*/
public class PropertiesBeanPopulator {
/**
* Populate the properties.
*
* @param registry the registry instance.
* @param path the path of the resource.
* @param viewProps whether the system properties are shown or not.
*
* @return the properties bean.
*
* @throws RegistryException if there is an failure in populating properties.
*/
public static PropertiesBean populate(UserRegistry registry, String path, String viewProps)
throws RegistryException {
Resource resource = registry.get(path);
ResourcePath resourcePath = new ResourcePath(path);
PropertiesBean propertiesBean = new PropertiesBean();
boolean isPutAllowed = false;
if (CarbonContext.getThreadLocalCarbonContext().getUsername() != null &&
!CarbonContext.getThreadLocalCarbonContext().getUsername().equals(resource.getProperty(CommonConstants.
RETENTION_USERNAME_PROP_NAME)) &&
Boolean.parseBoolean(resource.getProperty(CommonConstants.RETENTION_WRITE_LOCKED_PROP_NAME))) {
propertiesBean.setWriteLocked(resource.getProperty(CommonConstants.RETENTION_WRITE_LOCKED_PROP_NAME));
propertiesBean.setDeleteLocked(resource.getProperty(CommonConstants.RETENTION_DELETE_LOCKED_PROP_NAME));
} else {
propertiesBean.setWriteLocked("false");
propertiesBean.setDeleteLocked("false");
}
Properties properties = resource.getProperties();
Set keySet = properties.keySet();
Property [] propArray;
if(keySet.size() != 0) {
Object [] keys = keySet.toArray();
List values;
propArray = new Property [keys.length];
for (int i=0; i<keys.length; i++) {
Property prop = new Property();
prop.setKey((String) keys[i]);
values = (List) properties.get(keys[i]);
prop.setValue((String) values.get(0));
propArray[i] = prop;
if (keys[i].equals("registry.link") &&
values.get(0).equals("true")) {
//isPutAllowed = true;
}
}
} else {
propArray = new Property [0];
}
propertiesBean.setProperties(propArray);
Boolean viewSysProps = false;
if(viewProps.equalsIgnoreCase("yes")) {
viewSysProps = true;
}
List<String> sysProperties = new ArrayList<String>();
List <String> validationProperties = new ArrayList <String> ();
List <String> lifecycleProperties = new ArrayList <String> ();
for(Object key : keySet){
String name = (String) key;
if ((viewSysProps) || !name.startsWith("registry.")) {
sysProperties.add(name);
}
if (name.startsWith("registry.wsdl") || name.startsWith("registry.wsi")) {
validationProperties.add(name);
} else if (name.startsWith("registry.lifecycle.") ||
name.equals(Aspect.AVAILABLE_ASPECTS)) {
lifecycleProperties.add(name);
}
}
Collections.sort(sysProperties);
propertiesBean.setSysProperties(sysProperties.toArray(new String[sysProperties.size()]));
propertiesBean.setValidationProperties(validationProperties.toArray(new String[validationProperties.size()]));
propertiesBean.setLifecycleProperties(lifecycleProperties.toArray(new String[lifecycleProperties.size()]));
propertiesBean.setVersionView(!resourcePath.isCurrentVersion());
propertiesBean.setPathWithVersion(resourcePath.getPathWithVersion());
if (!isPutAllowed) {
isPutAllowed = UserUtil.isPutAllowed(registry.getUserName(), path, registry);
}
propertiesBean.setPutAllowed(isPutAllowed);
propertiesBean.setLoggedIn(!RegistryConstants.ANONYMOUS_USER.equals(registry.getUserName()));
return propertiesBean;
}
}