package com.eactive.eai.rms.onl.manage.rule.aurora;//package com.eactive.eai.rms.onl.manage.rule.aurora;
//
//import java.io.BufferedWriter;
//import java.io.File;
//import java.io.FileWriter;
//import java.io.IOException;
//import java.text.SimpleDateFormat;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.Iterator;
//import java.util.LinkedHashMap;
//import java.util.List;
//import java.util.Map;
//
//import org.apache.commons.lang3.StringUtils;
//import org.apache.log4j.Logger;
//
//import com.eactive.eai.common.dao.DAOFactory;
//import com.eactive.eai.common.property.PropGroupVO;
//import com.eactive.eai.common.property.PropertyDAO;
//import com.eactive.eai.common.util.StringUtil;
//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 AuroraASG {
//	private static final Logger logger = Logger.getLogger(AuroraASG.class);
//	private static final String OPENAPI_DOMAIN_KEY = "ASG";
//	
//	private String iniPath;
//	private String rootPath;
//	private PropGroupVO prop;
//	
//	/**
//	 * Constructor
//	 * @param iniPath
//	 */
//	public AuroraASG() throws Exception {
//		try {
//			this.prop = ((PropertyDAO)DAOFactory.newInstance().create(PropertyDAO.class)).getProperties("CM_CONFIG");
//			if (prop == null) {
//				throw new Exception("������Ƽ ������ �����ϴ�. - CM_CONFIG");
//			} else {
//				this.iniPath = prop.getProperty("aurora.ini.path");
//				logger.info("Aurora.ini FullPath: "+ iniPath);
//			}
//		} catch (Exception e) {
//			throw e;
//		}
//	}
//	
//	/**
//	 * Constructor
//	 * @param key
//	 * @param path
//	 * @throws Exception
//	 */
//	public AuroraASG(String key, String path) throws Exception {
//		this();
//		switch(key) {
//			case "xls":
//			case "tmp":
//				this.rootPath = prop.getProperty("aurora."+ key + ".path") + StringUtil.nvlTrim(path);
//				new File(rootPath).mkdirs();
//				break;
//			default:
//				throw new Exception("�߸��� ������Ƽ Ű �Դϴ�.");
//		}
//	}
//	
//	/**
//	 * 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());
//			throw be;
//		} catch (Exception e) {
//			throw e;
//		} finally {
//			if (aurora != null) {
//				aurora.disconnect();
//			}
//		}
//		return list;
//	}
//	
//	/**
//	 * ���̾ƿ� ���� ���� ���� ó��
//	 * @param groupCoCd
//	 * @param apCode
//	 * @param cmId
//	 * @param allTR01
//	 * @param allTR02
//	 * @param allTR03
//	 * @return
//	 * @throws Exception
//	 */
//	public List<String> writeLayoutToFileForTransform(String groupCoCd, String apCode, String cmId, List<LinkedHashMap> allTR01, List<LinkedHashMap> allTR02, List<LinkedHashMap> allTR03) {
//		List<String> ret = new ArrayList<String>();
//		String subPath = OPENAPI_DOMAIN_KEY + File.separator + "transform" + File.separator;
//		
//		BufferedWriter bw = null;
//		try {
//			boolean isHeader = true;
//			for (LinkedHashMap tr01 : allTR01) {
//				String cnvsnName = StringUtil.getNullStr(tr01.get("CNVSNNAME"));
//				File file = new File(rootPath + subPath + cnvsnName + ".txt");
//				// ���丮 ����
//				new File(file.getParent()).mkdirs();
//				bw = new BufferedWriter(new FileWriter(file));
//				// TR01 ����
//				fileWrite(bw, "TSEAITR01", tr01, isHeader);
//				// TR02 ����
//				for (LinkedHashMap tr02 : allTR02) {
//					String subCnvsnName = StringUtil.getNullStr(tr02.get("CNVSNNAME"));
//					if (StringUtils.equals(cnvsnName, subCnvsnName)) {
//						fileWrite(bw, "TSEAITR02", tr02, isHeader);
//						isHeader = false;
//					}
//				}
//				// TR03 ����
//				isHeader = true;
//				for (LinkedHashMap tr03 : allTR03) {
//					String subCnvsnName = StringUtil.getNullStr(tr03.get("CNVSNNAME"));
//					if (StringUtils.equals(cnvsnName, subCnvsnName)) {
//						fileWrite(bw, "TSEAITR03", tr03, isHeader);
//						isHeader = false;
//					}
//				}
//				
//				isHeader = true;
//				ret.add(file.getAbsolutePath());
//				bw.close();
//			}
//		} catch (Exception e) {
//			logger.error(e.getMessage());
//			ret = null;
//		} finally {
//			try {
//				if (bw != null) {
//					bw.close();
//				}
//			} catch (IOException ie) {}
//		}
//		
//		return ret;
//	}
//	
//	/**
//	 * 
//	 * @param groupCoCd
//	 * @param apCode
//	 * @param cmId
//	 * @param allTR07
//	 * @param allTR08
//	 * @return
//	 */
//	public List<String> writeLayoutToFileForLayout(String groupCoCd, String apCode, String cmId, List<LinkedHashMap> allTR07, List<LinkedHashMap> allTR08) {
//		List<String> ret = new ArrayList<String>();
//		String subPath = OPENAPI_DOMAIN_KEY + File.separator + "layout" + File.separator;
//		
//		BufferedWriter bw = null;
//		try {
//			boolean isHeader = true;
//			for (LinkedHashMap tr07 : allTR07) {
//				String loutName = StringUtil.getNullStr(tr07.get("LOUTNAME"));
//				File file = new File(rootPath + subPath + loutName + ".txt");
//				// ���丮 ����
//				new File(file.getParent()).mkdirs();
//				bw = new BufferedWriter(new FileWriter(file));
//				// TR07 ����
//				fileWrite(bw, "TSEAITR07", tr07, isHeader);
//				// TR08 ����
//				for (LinkedHashMap tr08 : allTR08) {
//					String subLoutName = StringUtil.getNullStr(tr08.get("LOUTNAME"));
//					if (StringUtils.equals(loutName, subLoutName)) {
//						fileWrite(bw, "TSEAITR08", tr08, isHeader);
//						isHeader = false;
//					}
//				}
//				
//				isHeader = true;
//				ret.add(file.getAbsolutePath());
//				bw.close();
//			}
//		} catch (Exception e) {
//			logger.error(e.getMessage());
//			ret = null;
//		} finally {
//			try {
//				if (bw != null) {
//					bw.close();
//				}
//			} catch (IOException ie) {}
//		}
//		
//		return ret;
//	}
//	
//	/**
//	 * 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 = groupCoCd +"/"+ apCode +"/"+ apCode.toLowerCase() + "-eaiiomap";
//			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));
//			}
//			int repId = aurora.getCMSRepositoryId(groupCoCd +"/"+ apCode.toUpperCase() +"/"+ apCode.toLowerCase() +"-eaiiomap");
//			if (repId < 1) {
//				i = repId;
//				throw new BizException(aurora.getStdErrorMessage(i));
//			}
//			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.getUserId());
//				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;
//	}
//	
//	/**
//	 * ��ȸ�� ������ ���� ����
//	 * @param bw
//	 * @param tableName
//	 * @param map
//	 * @param isHeader
//	 * @throws IOException
//	 */
//	private void fileWrite(BufferedWriter bw, String tableName, LinkedHashMap map, boolean isHeader) throws IOException {
//		StringBuffer keys = new StringBuffer();
//		StringBuffer vals = new StringBuffer();
//		Iterator it = map.keySet().iterator();
//		while( it.hasNext() ) {
//			String key = (String)it.next();
//            keys.append(key).append(";");
//            String val = "" ;
//            Object obj = map.get(key);
//            if( obj instanceof Integer ) {
//                val = "" + (Integer)obj;
//            } else if( obj instanceof String ) {
//                val = (String)obj;
//                val  = val.replaceAll("\\n+", "");
//            } else {
//                logger.error("Invalid return type =>" + obj + ", table="+ tableName +", key=" + key);
//            }
//            vals.append(val).append(";");
//		}
//		if (isHeader) {
//			bw.write(tableName);
//    		bw.newLine();
//            bw.write(keys.toString());
//            bw.newLine();
//		}
//		bw.write(vals.toString());
//		bw.newLine();
//	}
//	
//}
