/*
* 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.relations.services.utils;
import org.wso2.carbon.registry.core.Association;
import org.wso2.carbon.registry.core.RegistryConstants;
import org.wso2.carbon.registry.core.Resource;
import org.wso2.carbon.registry.core.ResourcePath;
import org.wso2.carbon.registry.core.exceptions.RegistryException;
import org.wso2.carbon.registry.core.session.UserRegistry;
import org.wso2.carbon.registry.relations.beans.AssociationBean;
import org.wso2.carbon.registry.relations.beans.DependenciesBean;
import org.wso2.carbon.registry.common.utils.UserUtil;
import java.util.List;
public class DependenciesBeanPopulator {
public static DependenciesBean populate(UserRegistry userRegistry, String path) {
DependenciesBean dependenciesBean = new DependenciesBean();
ResourcePath resourcePath = new ResourcePath(path);
try {
Association[] asso = CommonUtil.getAssociations(userRegistry,
(resourcePath.isCurrentVersion() ?
resourcePath.getPath() : resourcePath.getPathWithVersion()));
Resource resource = userRegistry.get(path);
AssociationBean[] beans = new AssociationBean[asso.length];
for (int i = 0; i < beans.length; i++) {
Association as = asso[i];
beans[i] = new AssociationBean(as.getSourcePath(), as.getDestinationPath(),
as.getAssociationType());
}
dependenciesBean.setAssociationBeans(beans);
dependenciesBean.setVersionView(!resourcePath.isCurrentVersion());
dependenciesBean.setPathWithVersion(resourcePath.getPathWithVersion());
List mountPoints = resource.getPropertyValues("registry.mountpoint");
List targetPoints = resource.getPropertyValues("registry.targetpoint");
// List paths = resource.getPropertyValues("registry.path");
List actualPaths = resource.getPropertyValues("registry.actualpath");
String user = resource.getProperty("registry.user");
if (resource.getProperty("registry.link") != null) {
if(mountPoints != null && targetPoints != null) {
// String mountPoint = (String)mountPoints.get(0);
// String targetPoint = (String)targetPoints.get(0);
// String tempPath;
// if (targetPoint.equals(RegistryConstants.PATH_SEPARATOR) && !path.equals(mountPoint)) {
// tempPath = ((String)paths.get(0)).substring(mountPoint.length());
// } else {
// tempPath = targetPoint + ((String)paths.get(0)).substring(mountPoint.length());
// }
String tempPath = (String)actualPaths.get(0);
dependenciesBean.setPutAllowed(
UserUtil.isPutAllowed(userRegistry.getUserName(), tempPath, userRegistry));
} else if (user != null) {
if (userRegistry.getUserName().equals(user)) {
dependenciesBean.setPutAllowed(true);
} else {
dependenciesBean.setPutAllowed(UserUtil.isPutAllowed(
userRegistry.getUserName(), path, userRegistry));
}
}
} else {
dependenciesBean.setPutAllowed(UserUtil.isPutAllowed(userRegistry.getUserName(), path, userRegistry));
}
dependenciesBean.setLoggedIn(!RegistryConstants.ANONYMOUS_USER.equals(userRegistry.getUserName()));
} catch (RegistryException e) {
String msg = "Failed to get dependencies of resource " +
resourcePath + ". " + e.getMessage();
dependenciesBean.setErrorMessage(msg);
}
return dependenciesBean;
}
}