use of com.serena.dmclient.api.DimensionsRelatedObject in project Gargoyle by callakrsos.
the class DimDirHandler method accept.
/**
* parent폴더 기준,
* filter처리된 아이템 대상으로 하위 아이템들을 순회하는 코드
*/
@Override
public void accept(RepositoryFolder parent) {
Filter itemFilter = itemFilter();
List<DimensionsRelatedObject> childItems = parent.getChildItems(/*필터 적용*/
itemFilter);
childItems.stream().map(f -> (ItemRevision) f.getObject()).forEach(r -> handle(r));
}
use of com.serena.dmclient.api.DimensionsRelatedObject in project Gargoyle by callakrsos.
the class DimList method listEntry.
/**
* 디멘전 트리 순회
* @작성자 : KYJ
* @작성일 : 2017. 4. 24.
* @param parent
* @param handler
* @return
* @throws Exception
*/
public List<DimensionsRelatedObject> listEntry(RepositoryFolder parent, ScmDirHandler<RepositoryFolder> handler) throws Exception {
ArrayList<DimensionsRelatedObject> items = new ArrayList<DimensionsRelatedObject>();
//자기 자신에 대한 정보
if (handler.test(parent)) {
handler.accept(parent);
}
//모든 하위 디렉토리를 출력한것.
List<RepositoryFolder> allChildFolders = parent.getAllChildFolders();
if (allChildFolders.isEmpty()) {
return items;
}
for (RepositoryFolder r : allChildFolders) {
if (handler.test(r)) {
handler.accept(r);
/*
* getAllChildFolder()함수 자체가 재귀호출 로직을 처리하지않게끔.
* 모든 하위 디렉토리를 출력함.
*/
// listEntry(r, handler); ** 재귀처리하지않는다.
}
}
return items;
}
use of com.serena.dmclient.api.DimensionsRelatedObject in project Gargoyle by callakrsos.
the class DimList method list.
/********************************
* 작성일 : 2017. 4. 24. 작성자 : KYJ
*
* path에 속하는 하위 구성정보 조회
*
* @param path
* @param revision
* @param exceptionHandler
* @return
********************************/
public <T> List<T> list(String projSpec, String path, String fileName, String revision, Function<ItemRevision, T> convert, Consumer<Exception> exceptionHandler) {
List<T> collections = Collections.emptyList();
DimensionsConnection conn = null;
try {
conn = getConnection();
Project projObj = getProject(conn, projSpec);
RepositoryFolder findRepositoryFolderByPath = projObj.findRepositoryFolderByPath(path);
Filter filter = new Filter();
if (ValueUtil.isNotEmpty(fileName))
filter.criteria().add(new Filter.Criterion(SystemAttributes.ITEMFILE_FILENAME, fileName, Filter.Criterion.EQUALS));
if (ValueUtil.equals("-1", revision)) {
filter.criteria().add(new Filter.Criterion(SystemAttributes.IS_LATEST_REV, "Y", 0));
} else {
filter.criteria().add(new Filter.Criterion(SystemAttributes.REVISION, revision, Filter.Criterion.EQUALS));
}
List allChildFolders = findRepositoryFolderByPath.getAllChildFolders();
List<DimensionsRelatedObject> childItems = findRepositoryFolderByPath.getChildItems(filter);
// Stream.concat(allChildFolders, childItems);
List<ItemRevision> collect = childItems.stream().map(i -> (ItemRevision) i.getObject()).collect(Collectors.toList());
collections = collect.stream().map(convert).collect(Collectors.toList());
} catch (Exception e) {
exceptionHandler.accept(e);
} finally {
manager.close(conn);
}
return collections;
}
use of com.serena.dmclient.api.DimensionsRelatedObject in project Gargoyle by callakrsos.
the class DimResource method search.
public <K> K search(RepositoryFolder folder, List<String> linkedList, String revision, Function<List<DimensionsRelatedObject>, K> convert) {
K items = null;
if (linkedList.size() == 0) {
return items;
}
String subPathName = linkedList.get(0);
if (linkedList.size() > 1) {
RepositoryFolder childFolder = folder.getChildFolder(subPathName);
linkedList.remove(0);
return search(childFolder, linkedList, revision, convert);
} else {
Filter filter = new Filter();
/* 파일명과 동일한것만 가져옴 */
filter.criteria().add(new Filter.Criterion(SystemAttributes.ITEMFILE_FILENAME, subPathName, Filter.Criterion.EQUALS));
if ("-1".equals(revision))
//$NON-NLS-1$
filter.criteria().add(new Filter.Criterion(SystemAttributes.IS_LATEST_REV, "Y", 0));
else
filter.criteria().add(new Filter.Criterion(SystemAttributes.REVISION, revision, Filter.Criterion.EQUALS));
List<DimensionsRelatedObject> childItems = folder.getChildItems(filter);
return convert.apply(childItems);
}
}
Aggregations