use of com.serena.dmclient.api.DimensionsResult in project Gargoyle by callakrsos.
the class DimCat method copy.
/**
*
* 파일을 복사후 로컬에 붙어넣기.
* 파일명에 리비전 번호를 붙여 읽는도중 다른 리비전 읽기 요청이 온 경우 대비할 수 있게한다.
*
*
* 2017.4.27
* 파일명에 리비전 번호를 붙임.
* 파일명에 리비전 번호를 붙여 읽는도중 다른 리비전 읽기 요청이 온 경우 대비할 수 있게한다.
*
* 2017.4.13 kyj.
* 한가지 우려되는 부분은
* 읽고 있는도중에 쓰거나
* 쓰는도중에 읽는경우 어떻게 반응할것인가 하는문제.
*
*
* ps 디멘전 코드는 까볼수없으니 참..
*
*
* @작성자 : KYJ
* @작성일 : 2017. 3. 14.
* @param prjSpec
* @param fullPathName
* @param revision
* @param encoding
* @param exceptionHandler
* @return
* @throws Exception
*/
public File copy(String prjSpec, String fullPathName, String revision, String encoding) {
List<String> linkedList = new LinkedList<String>();
for (String pathItem : fullPathName.split("/")) {
if (pathItem != null && !pathItem.isEmpty()) {
linkedList.add(pathItem);
}
}
//저장 디렉토리 위치
File root = tmpDir();
DimensionsConnection conn = null;
try {
conn = getConnection();
Project project = getProject(conn, prjSpec);
RepositoryFolder rootFolder = project.getRootFolder();
//searchFindOne(rootFolder, linkedList, revision);
ItemRevision ir = manager.searchFindOne(rootFolder, linkedList, revision);
if (ir == null)
return null;
//반드시 호출.
ir.queryAttribute(new int[] { SystemAttributes.ITEMFILE_FILENAME, SystemAttributes.ITEMFILE_DIR, SystemAttributes.LAST_UPDATED_DATE, SystemAttributes.UTC_MODIFIED_DATE, SystemAttributes.REVISION });
String pathName = ir.getAttribute(SystemAttributes.ITEMFILE_DIR).toString();
String name = ir.getAttribute(SystemAttributes.ITEMFILE_FILENAME).toString();
String itemRevision = ir.getAttribute(SystemAttributes.REVISION).toString();
if (!root.exists()) {
try {
FileUtil.mkDirs(root);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
Path path = Paths.get(root.getAbsolutePath(), pathName, name.concat("_").concat(itemRevision));
// File tmp = new File(root.getAbsolutePath(), name.concat("_").concat(newRevision));
//new File(tmp, pathName) //root.getAbsolutePath() + "/";
String saveFilePathName = path.toString();
/*
* java.lang.String destinationFileName,
* boolean expandSubstitutionVariables,
* boolean overwriteWritableFiles,
* boolean applySystemTime
*
* 첫번째 String : 저장할 파일명
* 두번째 boolean : ? 치환변수? ->
* 세번째 boolean : 덮어씌울지 여부 -> false - 이미존재하면 덮어쓰지않음
* 네번째 boolean : 시스템 타임 적용여부 -> false - 원본파일의 날짜 유지
* */
DimensionsResult copy = ir.getCopy(saveFilePathName, true, false, false);
// DimensionsResult copy = ir.getCopyToFolder(saveFilePathName, true, true, false);
LOGGER.debug("Dimension DOWLNLOAD START ############################");
LOGGER.debug("Dimension DOWLNLOAD File Name : " + name);
LOGGER.debug("Dimension DOWLNLOAD MESSAGE : " + copy.getMessage());
LOGGER.debug("Dimension DOWLNLOAD ItemRevisionInfo : " + ir);
LOGGER.debug("Dimension DOWLNLOAD END ############################");
} finally {
if (conn != null)
conn.close();
}
return new File(root, fullPathName);
}
Aggregations