package com.eactive.eai.rms.onl.manage.rule.aurora;//package com.eactive.eai.rms.onl.manage.rule.aurora;
//
//import java.io.File;
//import java.text.SimpleDateFormat;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
//import org.apache.commons.lang3.StringUtils;
//import org.apache.log4j.Logger;
//
//import com.eactive.eai.rms.onl.common.exception.BizException;
//
//import aurora.api.Aurora;
//import aurora.api.AuroraConst;
//import aurora.api.object.CM;
//import aurora.api.object.ResourceVersion;
//
//public class AuroraUtil {
//	private static final Logger logger = Logger.getLogger(AuroraUtil.class);
//	
//	private String iniPath;
//	private String rootPath;
//	
//	/**
//	 * Constructor
//	 * @param iniPath
//	 */
//	public AuroraUtil(String iniPath, String rootPath) throws Exception {
//		this.iniPath = iniPath;
//		this.rootPath = rootPath;
//	}
//	
//	public AuroraUtil(String iniPath) throws Exception {
//		this.iniPath = iniPath;
//	}
//
//	
//	/**
//	 * Aurora�� ��ϵ� CM ��� ���
//	 * @param userId
//	 * @param groupCoCd
//	 * @param apCode
//	 * @return
//	 * @throws Exception
//	 */
//	public ArrayList<Map> getCMList(String userId, String groupCoCd, String apCode) throws BizException, Exception {
//		ArrayList<Map> list = new ArrayList<Map>();
//		Aurora aurora = null;
//		try {
//			int i = 0;
//			// Aurora ȯ�漳�� ���� INI ���� ����
//			aurora = new Aurora(iniPath);
//			// Aurora ����
//			i = aurora.connect(groupCoCd);
//			if (i < 0) {
//				throw new BizException(aurora.getStdErrorMessage(i));
//			}
//			// Aurora ���� ����
//			i = aurora.setUser(userId);
//			if (i < 0) {
//				throw new BizException(aurora.getStdErrorMessage(i));
//			}
//			// ������ �����ڵ忡 ����� CM ��� ���
//			CM[] cms = aurora.getCMList(apCode);
//			if (cms.length < 1) {
//				throw new BizException("�ش� �����ڵ忡 ���� CM ��Ű���� �����ϴ�.");
//			}
//			for (CM c : cms) {
//				HashMap map = new HashMap();
//				map.put("CMID", c.getCmId());
//				map.put("TITLE", c.getTitle());
//				map.put("USERID", c.getCreateUserId());
//				map.put("CMDAY", c.getCmReserveDate());
//				list.add(map);
//			}
//		} catch (BizException be) {
//			logger.error(Aurora.getLastErrorMassege(),be);
//			throw be;
//		} catch (Exception e) {
//			logger.error(""+e.getMessage(),e);
//			throw e;
//		} finally {
//			if (aurora != null) {
//				aurora.disconnect();
//			}
//		}
//		return list;
//	}
//	
//	/**
//	 * Aurora ���
//	 * @param userId
//	 * @param groupCoCd
//	 * @param apCode
//	 * @param cmId
//	 * @param cmList
//	 * @return
//	 * @throws Exception
//	 */
//	public boolean addCMResource(String userId, String groupCoCd, String apCode, String cmId, List<String> cmList) throws BizException, Exception {
//		boolean ret = false;
//		Aurora aurora = null;
//		try {
//			int i = 0;
//			// Aurora ȯ�漳�� ���� INI ���� ����
//			aurora = new Aurora(iniPath);
//			// Aurora ����
//			i = aurora.connect(groupCoCd);
//			if (i < 0) {
//				throw new BizException(aurora.getStdErrorMessage(i));
//			}
//			// Aurora ���� ����
//			i = aurora.setUser(userId);
//			if (i < 0) {
//				throw new BizException(aurora.getStdErrorMessage(i));
//			}
//			
//			String repVal = apCode +"/"+ apCode.toLowerCase() + "-mmieaiiomap";
//			int repId = aurora.getCMSRepositoryId(repVal);
//			logger.debug("Repository CM Value: "+ repVal);
//			if (repId < 1) {
//				i = repId;
//				throw new BizException(aurora.getStdErrorMessage(i));
//			}
//			// Aurora ���
//			for (String srcPath : cmList) {
//				i = aurora.addCMResource(repId ,cmId , rootPath, srcPath);
//				if (i < 0) {
//					logger.error("Aurora addCMResource fail["+ i +"], "+ repId +", "+ cmId +", "+ srcPath);
//					throw new BizException(aurora.getStdErrorMessage(i));
//				}
//				logger.info("addCMResource: "+ repId +"|"+ cmId +"|"+ srcPath);
//				
//				// Delete Src File
//				new File(srcPath).delete();
//			}
//			ret = true;
//		} catch (BizException be) {
//			logger.error(Aurora.getLastErrorMassege());
//			throw be;
//		} catch (Exception e) {
//			throw e;
//		} finally {
//			if (aurora != null) {
//				aurora.disconnect();
//			}
//		}
//		return ret;
//	}
//	
//	public ArrayList<Map> getResourceVersion(String groupCoCd, String repKey, String schType, String desc) throws BizException, Exception {
//		ArrayList<Map> ret = new ArrayList<Map>();
//		
//		Aurora aurora = null;
//		try {
//			int i = 0;
//			// Aurora ȯ�漳�� ���� INI ���� ����
//			aurora = new Aurora(iniPath);
//			// Aurora ����
//			i = aurora.connect(groupCoCd);
//			if (i < 0) {
//				throw new BizException(aurora.getStdErrorMessage(i));
//			}
//			int repId = aurora.getRepositoryId(repKey);
//			if (repId < 1) {
//				i = repId;
//				throw new BizException(aurora.getStdErrorMessage(i));
//			}
//			logger.debug("Repository CM Value: "+ repKey);
//			ResourceVersion[] versions = StringUtils.equals(schType, "N") 
//					? aurora.getSourceListByName(repId, desc, AuroraConst.AURORA_LIKE_TYPE2)
//					: aurora.getVersionListByDescription(repId, desc);
//			logger.debug("Versions length: "+ versions.length);		
//			for (ResourceVersion v : versions) {
//				Map map = new HashMap();
//				map.put("FILENM", v.getSrcName());
//				map.put("DESC", v.getDescrition());
//				map.put("VERSION", v.getVersion());
//				map.put("MODIFYDT", new SimpleDateFormat("yyyy-MM-dd").format(v.getModifyDate()));
//				map.put("SRCID", v.getSrcId());
//				ret.add(map);
//			}
//			
//		} catch (BizException be) {
//			logger.error(Aurora.getLastErrorMassege());
//			throw be;
//		} catch (Exception e) {
//			throw e;
//		} finally {
//			if (aurora != null) {
//				aurora.disconnect();
//			}
//		}
//		
//		return ret;
//	}
//	
//	public List<String> getDownloadResource(String userId, String groupCoCd, String srcIds, String versions, String fileNames) throws Exception {
//		List<String> ret = new ArrayList<String>();
//		
//		Aurora aurora = null;
//		try {
//			int i = 0;
//			// Aurora ȯ�漳�� ���� INI ���� ����
//			aurora = new Aurora(iniPath);
//			// Aurora ����
//			i = aurora.connect(groupCoCd);
//			if (i < 0) {
//				throw new BizException(aurora.getStdErrorMessage(i));
//			}
//			// Aurora ���� ����
//			i = aurora.setUser(userId);
//			if (i < 0) {
//				throw new BizException(aurora.getStdErrorMessage(i));
//			}
//			String[] arrSrcId = srcIds.split(",");
//			String[] arrVersion = versions.split(",");
//			String[] arrFileName = fileNames.split(",");
//			for (int n=0; n<arrSrcId.length; n++) {
//				int srcId = Integer.parseInt(arrSrcId[n]);
//				int version = Integer.parseInt(arrVersion[n]);
//				String fileName = arrFileName[n];
//				i = aurora.getDownloadResource(srcId, version, rootPath + fileName);
//				if (i < 0) {
//					throw new BizException(aurora.getStdErrorMessage(i));
//				}
//				ret.add(fileName);
//			}
//			
//		} catch (BizException be) {
//			logger.error(Aurora.getLastErrorMassege());
//			throw be;
//		} catch (Exception e) {
//			throw e;
//		} finally {
//			if (aurora != null) {
//				aurora.disconnect();
//			}
//		}
//		
//		return ret;
//	}
//	
//	public List getCmFileList(String userId, String groupCoCd, String apCode, String pkgNumber) throws Exception {
//		List ret = new ArrayList();
//		
//		Aurora aurora = null;
//		try {
//			int i = 0;
//			// Aurora ȯ�漳�� ���� INI ���� ����
//			aurora = new Aurora(iniPath);
//			// Aurora ����
//			i = aurora.connect(groupCoCd);
//			if (i < 0) {
//				throw new BizException(aurora.getStdErrorMessage(i));
//			}
//			// Aurora ���� ����
//			i = aurora.setUser(userId);
//			if (i < 0) {
//				throw new BizException(aurora.getStdErrorMessage(i));
//			}
//			String repVal = apCode.toUpperCase() +"/"+ apCode.toLowerCase() +"-mmieaiiomap";
//			int repId = aurora.getCMSRepositoryId(repVal);
//			logger.debug("Repository CM Value: "+ repVal);
//			if (repId < 1) {
//				i = repId;
//				throw new BizException(aurora.getStdErrorMessage(i));
//			}
//			//����Ȯ������ üũ		
//			boolean devLockFlag = false;
//			CM cm = aurora.getCM(pkgNumber);
//			if (cm.isDevLock()){
//				devLockFlag = true;
//			}
//			//SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//			ResourceVersion[] versions = aurora.getCmResourceListByCms(repId, pkgNumber, "", AuroraConst.AURORA_LIKE_TYPE3);
//			for (ResourceVersion rv : versions) {
//				Map map = new HashMap();
//				map.put("APCODE", apCode);
//				map.put("PKGNUMBER", pkgNumber);
//				map.put("FILENAME", rv.getSrcName());
//				map.put("USERID", rv.getCheckInUserName()+"("+rv.getCheckInUserId()+")");
//				map.put("VERSION", rv.getVersion());
//				map.put("MODYDATE",  new SimpleDateFormat("yyyy-MM-dd").format(rv.getModifyDate()));
//				map.put("DEVLOCK", rv.getDevLock());
//				map.put("CMSTATUS", rv.isStgDeployed());
//				map.put("PATH", rv.getSrcPath());
//				ret.add(map);
//			}
//			
//		} catch (BizException be) {
//			logger.error(Aurora.getLastErrorMassege());
//			throw be;
//		} catch (Exception e) {
//			throw e;
//		} finally {
//			if (aurora != null) {
//				aurora.disconnect();
//			}
//		}
//		
//		return ret;
//	}
//	
//	public boolean cancelCmSave(String cmId, String userId, String apCode, String fileName, String iniPathName, String pathName) throws BizException, Exception {
//		//cm�����Ѱ� ��� 
//		boolean ret = false;
////		if(!ret)throw new RuntimeException("��ҺҰ�");
//		
//		Aurora aurora = new Aurora(iniPathName);
//		//1. ����������� ����
//		int i = aurora.connect("KB0");
//		if (i < 0) 
//		{
//			logger.error(aurora.getLastErrorMassege());
//			throw new BizException(aurora.getLastErrorMassege());
//		}
//		try{
//			//2. ����� ����
//			i = aurora.setUser(userId);
//			if (i < 0) {
//				logger.error(aurora.getLastErrorMassege());
//				throw new BizException(aurora.getLastErrorMassege());
//			}
//			
//			//3. �������丮 id ��ȸ
//			String repVal = apCode.toUpperCase() +"/"+ apCode.toLowerCase() +"-mmieaiiomap";
//			int cmsRepositoryId = aurora.getCMSRepositoryId(repVal);
//			if (cmsRepositoryId < 0) {
//				logger.error(aurora.getLastErrorMassege());
//				throw new BizException(aurora.getLastErrorMassege());
//			}
//			else{
//				logger.info("Cms RepId : " + Integer.toString(cmsRepositoryId));
//			}
//			//4. ����Ȯ������ üũ		
//			CM cm = aurora.getCM(cmId);
//			if (cm.isDevLock()){
//				logger.error("CM��Ű���� ����Ȯ���� �����Դϴ�. ");
//				throw new BizException("CM��Ű���� ����Ȯ���� �����Դϴ�. ");
//			}
//			
//			//5. ���ϸ�� ��ȸ
////			ResourceVersion[] fileList = aurora.getCmResourceListByCms(cmsRepositoryId, cmId, fileName, AuroraConst.AURORA_LIKE_TYPE2);
//			ResourceVersion cmFile = aurora.getCmResourceByCms(cmsRepositoryId, cmId, pathName, fileName);
//
//			i = aurora.delResourceFromCmByCms(cmFile.getSrcId(), cmId);
//			if (i < 0) {
//				logger.error(aurora.getLastErrorMassege());
//				throw new BizException(aurora.getLastErrorMassege());
//			}
//			logger.info(cmFile.getSrcName() + " CMSave Canceled.");
//				
//			//6. CM���� ���
////			for (int j = 0; j < fileList.length ; j++ ){
////				System.out.println(fileList[j].getSrcName());
////				i = aurora.delResourceFromCmByCms(fileList[j].getSrcId(), cmId);
////				if (i < 0) {
////					logger.error(aurora.getLastErrorMassege());
////					throw new BizException(aurora.getLastErrorMassege());
////				}
////				logger.info(fileList[j].getSrcName() + " CMSave Canceled.");
////				ret = true;
////			}
//			
//			logger.info(" AuroraApi CancelCmSave End.");
//		} catch (BizException be) {
//			logger.error(Aurora.getLastErrorMassege());
//			throw be;
//		} catch (Exception e) {
//			throw e;
//		} finally {
//			i = aurora.disconnect();
//			if (i < 0) {
//				//System.out.println(aurora.getStdErrorMessage(i));				
//				logger.error(aurora.getLastErrorMassege());
//			}
//		}
//		return ret;
//	}
//	
//	public HashMap downLoadCmFiles(String userId, String groupCoCd, String apCode, String pkgNumber, String iniPathName, String fileName, String downloadPath, String pathName) throws Exception {
//		int ret = -1;
//		HashMap retMap = new HashMap();
//		//String message = "";
//		Aurora aurora = new Aurora(iniPathName);
//			//1. ����������� ����
//			int i = aurora.connect("KB0");
//			if (i < 0) 
//			{
//				logger.error(aurora.getLastErrorMassege());
//				throw new BizException(aurora.getLastErrorMassege());
//			}
//			try{
//				//2. ����� ����
//				i = aurora.setUser(userId);
//				if (i < 0) {
//					logger.error(aurora.getLastErrorMassege());
//					throw new BizException(aurora.getLastErrorMassege());
//				}
//				
//				//3. cm�� ������¡ �������� ���� ���� ��ȸ
//				CM cm = aurora.getCM(pkgNumber);
//				if (cm == null) {
//					logger.error(aurora.getLastErrorMassege());
//					throw new BizException(aurora.getLastErrorMassege());
//				};		
//				
//				//4. �������丮 id ��ȸ
//				String repVal = apCode.toUpperCase() +"/"+ apCode.toLowerCase() +"-mmieaiiomap";
//				//System.out.println(repVal);
//				int cmsRepositoryId = aurora.getCMSRepositoryId(repVal);
//				if (cmsRepositoryId < 0) {
//					logger.error(aurora.getLastErrorMassege());
//					throw new BizException(aurora.getLastErrorMassege());
//				}
//				else{
//					logger.info("Cms RepId : " + Integer.toString(cmsRepositoryId));
//				}
//				
//				//5. ���� ��ȸ
////				ResourceVersion[] fileList = aurora.getCmResourceListByCms(cmsRepositoryId, cm.getCmId(), fileName, AuroraConst.AURORA_LIKE_TYPE2);
//				
//				ResourceVersion cmFile = aurora.getCmResourceByCms(cmsRepositoryId, cm.getCmId(), pathName, fileName);
//				if (cmFile.getVersion() == 0){
//					logger.warn(cmFile.getSrcName() + " �ش� ������ ������� �����ϴ�.");
//				} 
//				else {
//					ret = aurora.downloadCmsRepFile(cmFile, downloadPath);
//					logger.info("result >> "+ret+"\t fileName >> "+cmFile.getSrcName() + " Downloaded.");
//					retMap.put("STATUS", "success");
//				}		
//				
//				//6. ����� �ٿ�ε�
////				if(fileList.length>0){
////					for (int j = 0; j < fileList.length ; j++ ){
////						if (fileList[j].getVersion() == 0){
////							logger.warn(fileList[j].getSrcName() + " �ش� ������ ������� �����ϴ�.");
////						} 
////						else {
////							ret = aurora.downloadCmsRepFile(fileList[j], downloadPath);
////							logger.info("result >> "+ret+"\t fileName >> "+fileList[j].getSrcName() + " Downloaded.");
////							retMap.put("STATUS", "success");
////						}
////					}
////				}else{//������ ���°�� 
////					message = "������ �����ϴ�. ��Ű���� : "+cm.getCmId()+" ���ϸ� : "+fileName;
////					logger.warn(message);
////				}
//				logger.info("AuroraApi DownloadCmFiles End.");
//			} finally {
//				i = aurora.disconnect();
//				if (i < 0) {
//					logger.error(aurora.getLastErrorMassege());
//				}
//			}
//		return retMap;
//	}
//	 
////	public static void main(String[] args) throws Exception{ //������ҽ� ���� 2020.08.26
////		String iniPathName  = "D:\\aurora\\auroraApi_config.ini";
////
////		AuroraUtil util = new AuroraUtil(iniPathName);
////		String pkgNum = "EAI200021";
////		
////		String fileNameEGS = "TRANSFORM_EGS_KAA0490641EGS_ERR.txt";
////		String fileNameKAD = "KAD_KAD0620160_REQ2.txt";
////		String fileNameEAI = "EAI_TST0200100_REQ2.txt";
////		String downPkgNum = "KAD200023";
////		SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
////		String downloadPath = "";
////		//��Ű����ȸ
////		ArrayList<Map> listPkg = util.getCMList("S010794", "KB0", "EAI");
//////			"S010794", "KB0", "EAI"
//////			"S012447", "KB0", "KAD"
//////			"S012066", "KB0", "EGS"
////		for(Map m : listPkg){
//////			System.out.println(m);
////			ArrayList<Map> list = (ArrayList<Map>) util.getCmFileList("S010794", "KB0", "EAI" ,(String)m.get("CMID"));
////			downloadPath = "D:\\aurora\\eai\\cmRestore\\"+ (String)m.get("CMID") + File.separator + format.format(System.currentTimeMillis()) + File.separator;
////			for(Map m2: list){
////				System.out.println(m2);
//////				HashMap ret = util.downLoadCmFiles("S012066", "KB0", "EGS", (String)m.get("CMID"), iniPathName, (String)m2.get("FILENAME"), downloadPath);
//////				HashMap ret = util.downLoadCmFiles("S012447", "KB0", "KAD", (String)m.get("CMID"), iniPathName, (String)m2.get("FILENAME"), downloadPath);
//////				HashMap ret = util.downLoadCmFiles("S010794", "KB0", "EAI", (String)m.get("CMID"), iniPathName, fileNameEAI, downloadPath);
////			}
////		}
////		//���
//////		boolean cancel = util.cancelCmSave("EAI200021", "S010794", "EAI", "EAI_TST003_REQ2.txt", iniPathName, "/DSG/layout/");
////		//System.out.println("CMCANCEL RESULT : "+cancel);
////		//�ٿ�ε�
//////		HashMap ret = util.downLoadCmFiles("S012066", "KB0", "EGS", downPkgNum, iniPathName, fileNameEGS, downloadPath);
//////		HashMap ret = util.downLoadCmFiles("S012447", "KB0", "KAD", downPkgNum, iniPathName, fileNameKAD, downloadPath,"/NSG/layout/");
//////		System.out.println(ret);
////		
////		String svrDstcd = "";
////		
////	}
//}
