/*
* REntityUtil.java
*
* Copyright (C) 2010-2016, Microsoft Corporation
*
* This program is licensed to you under the terms of Version 2.0 of the
* Apache License. This program is distributed WITHOUT
* ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT,
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the
* Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0) for more details.
*
*/
package com.revo.deployr.client.util;
import com.revo.deployr.client.RProjectFile;
import com.revo.deployr.client.RProjectResult;
import com.revo.deployr.client.RRepositoryFile;
import com.revo.deployr.client.about.*;
import com.revo.deployr.client.core.impl.RLiveContext;
import com.revo.deployr.client.core.impl.RProjectFileImpl;
import com.revo.deployr.client.core.impl.RProjectResultImpl;
import com.revo.deployr.client.core.impl.RRepositoryFileImpl;
import com.revo.deployr.client.data.RData;
import java.net.URL;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
public class REntityUtil {
public static RUserDetails getUserDetails(Map<String, String> identity, Map<String, Integer> limits, String csrf) {
String username = (String) identity.get("username");
String displayname = (String) identity.get("displayname");
String cookie = (String) identity.get("usercookie");
int maxConcurrent = limits.get("maxConcurrentLiveProjectCount").intValue();
int maxIdle = limits.get("maxIdleLiveProjectTimeout").intValue();
int maxFile = limits.get("maxFileUploadSize").intValue();
RUserLimitDetails limitDetails =
new RUserLimitDetails(maxConcurrent, maxIdle, maxFile);
RUserDetails userDetails = new RUserDetails(username, displayname, cookie, csrf, limitDetails);
return userDetails;
}
public static RProjectDetails getProjectDetails(Map project) {
String id = (String) project.get("project");
String origin = (String) project.get("origin");
boolean islive = false;
if (project.get("live") != null) {
islive = (Boolean) project.get("live");
}
Date modified = null;
try {
modified = new Date((Long) project.get("lastmodified"));
} catch (Exception lex) {
}
List<String> authors = (List<String>) project.get("authors");
RProjectDetails projectDetails = new RProjectDetails(id, origin, islive, modified, authors);
projectDetails.name = (String) project.get("name");
projectDetails.descr = (String) project.get("descr");
projectDetails.longdescr = (String) project.get("longdescr");
projectDetails.shared = false;
if (project.get("shared") != null) {
projectDetails.shared = (Boolean) project.get("shared");
}
projectDetails.cookie = (String) project.get("projectcookie");
return projectDetails;
}
public static RRepositoryFileDetails getRepositoryFileDetails(Map repoFile,
RLiveContext liveContext) {
String filename = (String) repoFile.get("filename");
String directory = (String) repoFile.get("directory");
String author = (String) repoFile.get("author");
String version = (String) repoFile.get("version");
String latestby = (String) repoFile.get("latestby");
String descr = (String) repoFile.get("descr");
String type = (String) repoFile.get("type");
String urlString = (String) repoFile.get("url");
urlString = urlString + ";jsessionid=" + liveContext.httpcookie;
String tags = (String) repoFile.get("tags");
RRepositoryFile.Category category = null;
String categoryName = (String) repoFile.get("category");
if(categoryName != null) {
category = RRepositoryFile.Category.fromString(categoryName);
}
String sha256 = (String) repoFile.get("sha256");
Long lastModified = (Long) repoFile.get("lastModified");
Date lastModifiedDate = null;
try {
lastModifiedDate = new Date(lastModified);
} catch (Exception dex) {
}
URL url = null;
try {
url = new URL(urlString);
} catch (Exception ex) {
}
long size = 0L;
Object sizeObj = repoFile.get("length");
if(sizeObj instanceof Long)
size = (Long) sizeObj;
else
if(sizeObj instanceof Integer)
size = ((Integer) sizeObj).longValue();
String restricted = (String) repoFile.get("restricted");
boolean shared = false;
if (repoFile.get("shared") != null) {
shared = (Boolean) repoFile.get("shared");
}
boolean published = false;
if (repoFile.get("published") != null) {
published = (Boolean) repoFile.get("published");
}
String access = (String) repoFile.get("access");
List<String> authors = (List<String>) repoFile.get("authors");
String inputs = (String) repoFile.get("inputs");
String outputs = (String) repoFile.get("outputs");
RRepositoryFileDetails fileDetails =
new RRepositoryFileDetails(filename, directory, author, version, latestby,
descr, type, size, url, access,
restricted, shared, published, authors, inputs, outputs,
tags, category, sha256, lastModifiedDate);
return fileDetails;
}
public static RRepositoryDirectoryDetails getRepositoryDirectoryDetails(Map directory,
RLiveContext liveContext) {
String name = (String) directory.get("directory");
boolean systemDirectory = (name.equals(RRepositoryDirectoryDetails.SYSTEM_RESTRICTED) ||
name.equals(RRepositoryDirectoryDetails.SYSTEM_SHARED) ||
name.equals(RRepositoryDirectoryDetails.SYSTEM_PUBLIC)) ? true : false;
List<Map> files = (List<Map>) directory.get("files");
List<RRepositoryFile> repoList = new ArrayList<RRepositoryFile>();
if (files != null) {
for (Map repoFileMap : files) {
RRepositoryFileDetails details = REntityUtil.getRepositoryFileDetails(repoFileMap, liveContext);
RRepositoryFile repoFile = new RRepositoryFileImpl(details, liveContext);
repoList.add(repoFile);
}
}
RRepositoryDirectoryDetails dirDetails =
new RRepositoryDirectoryDetails(name, systemDirectory, repoList);
return dirDetails;
}
public static RJobDetails getJobDetails(Map job) {
String id = (String) job.get("job");
String name = (String) job.get("name");
String descr = (String) job.get("descr");
String status = (String) job.get("status");
String statusMsg = (String) job.get("statusMsg");
String tag = (String) job.get("tag");
long schedstart = 0;
Object schedstartObj = job.get("schedstart");
if (schedstartObj instanceof Integer)
schedstart = ((Integer) schedstartObj).longValue();
else if (schedstartObj instanceof Long)
schedstart = (Long) schedstartObj;
long schedinterval = 0;
Object schedintervalObj = job.get("schedinterval");
if (schedintervalObj instanceof Integer)
schedinterval = ((Integer) schedintervalObj).longValue();
else if (schedintervalObj instanceof Long)
schedinterval = (Long) schedintervalObj;
int schedrepeat = (Integer) job.get("schedrepeat");
int onrepeat = (Integer) job.get("onrepeat");
String project = (String) job.get("project");
long timeStart = 0L;
try {
timeStart = Long.parseLong(String.valueOf(job.get("timeStart")));
} catch (NumberFormatException nfex) {
}
long timeCode = 0L;
try {
timeCode = Long.parseLong(String.valueOf(job.get("timeCode")));
} catch (NumberFormatException nfex) {
}
long timeTotal = 0L;
try {
timeTotal = Long.parseLong(String.valueOf(job.get("timeTotal")));
} catch (NumberFormatException nfex) {
}
RJobDetails jobDetails =
new RJobDetails(id, name, descr, status, statusMsg, schedstart,
schedrepeat, schedinterval, onrepeat, project,
timeStart, timeCode, timeTotal, tag);
return jobDetails;
}
public static RProjectExecutionDetails getProjectExecutionDetails(RProjectDetails project, Map executionMap, List<RData> robjects, List<Map> repofiles, String error, int errorCode, RLiveContext liveContext) {
String execution = (String) executionMap.get("execution");
String code = (String) executionMap.get("code");
long timeStart = 0L;
try {
timeStart = Long.parseLong(String.valueOf(executionMap.get("timeStart")));
} catch (NumberFormatException nfex) {
}
long timeCode = 0L;
try {
timeCode = Long.parseLong(String.valueOf(executionMap.get("timeCode")));
} catch (NumberFormatException nfex) {
}
long timeTotal = 0L;
try {
timeTotal = Long.parseLong(String.valueOf(executionMap.get("timeTotal")));
} catch (NumberFormatException nfex) {
}
String tag = (String) executionMap.get("tag");
String console = (String) executionMap.get("console");
List<String> warnings = (List<String>) executionMap.get("warnings");
boolean interrupted = false;
if (executionMap.get("interrupted") != null) {
interrupted = (Boolean) executionMap.get("interrupted");
}
List<Map> results = (List<Map>) executionMap.get("results");
List<RProjectResult> resultList = new ArrayList<RProjectResult>();
if (results != null) {
for (Map resultMap : results) {
RProjectResultDetails details =
REntityUtil.getProjectResultDetails(resultMap);
RProjectResult projectResult =
new RProjectResultImpl(project, details, liveContext);
resultList.add(projectResult);
}
}
List<Map> artifacts = (List<Map>) executionMap.get("artifacts");
List<RProjectFile> artifactList = new ArrayList<RProjectFile>();
if (artifacts != null) {
for (Map artifactMap : artifacts) {
RProjectFileDetails details =
REntityUtil.getProjectFileDetails(artifactMap);
RProjectFile projectFile =
new RProjectFileImpl(project, details, liveContext);
artifactList.add(projectFile);
}
}
List<RRepositoryFile> repoList = new ArrayList<RRepositoryFile>();
if (repofiles != null) {
for (Map repoFileMap : repofiles) {
RRepositoryFileDetails details = REntityUtil.getRepositoryFileDetails(repoFileMap, liveContext);
RRepositoryFile repoFile = new RRepositoryFileImpl(details, liveContext);
repoList.add(repoFile);
}
}
RProjectExecutionDetails execDetails =
new RProjectExecutionDetails(execution, code,
timeStart, timeCode, timeTotal, tag, console, error, errorCode,
warnings, interrupted, resultList, artifactList, robjects, repoList);
return execDetails;
}
public static RProjectFileDetails getProjectFileDetails(Map fileMap) {
String filename = (String) fileMap.get("filename");
String descr = (String) fileMap.get("descr");
String type = (String) fileMap.get("type");
long size = 0L;
Object sizeObj = fileMap.get("length");
if(sizeObj instanceof Long)
size = (Long) sizeObj;
else
if(sizeObj instanceof Integer)
size = ((Integer) sizeObj).longValue();
String urlString = (String) fileMap.get("url");
URL url = null;
try {
url = new URL(urlString);
} catch (Exception ex) {
}
RProjectFileDetails fileDetails =
new RProjectFileDetails(filename, descr, type, size, url);
return fileDetails;
}
public static RProjectResultDetails getProjectResultDetails(Map resultMap) {
String execution = (String) resultMap.get("execution");
String filename = (String) resultMap.get("filename");
String type = (String) resultMap.get("type");
long size = 0L;
Object sizeObj = resultMap.get("length");
if(sizeObj instanceof Long)
size = (Long) sizeObj;
else
if(sizeObj instanceof Integer)
size = ((Integer) sizeObj).longValue();
String urlString = (String) resultMap.get("url");
URL url = null;
try {
url = new URL(urlString);
} catch (Exception ex) {
}
RProjectResultDetails resultDetails =
new RProjectResultDetails(execution, filename, type, size, url);
return resultDetails;
}
public static RProjectPackageDetails getProjectPackageDetails(Map packageMap) {
String name = (String) packageMap.get("name");
String descr = (String) packageMap.get("descr");
String repo = (String) packageMap.get("repo");
String version = (String) packageMap.get("version");
String status = (String) packageMap.get("status");
boolean attached = false;
if (packageMap.get("attached") != null) {
attached = (Boolean) packageMap.get("attached");
}
RProjectPackageDetails packageDetails =
new RProjectPackageDetails(name, descr, repo, version, status, attached);
return packageDetails;
}
}