/******************************************************************************* * Copyright (c) 2015 hangum. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Lesser Public License v2.1 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html * * Contributors: * hangum - initial API and implementation ******************************************************************************/ package com.hangum.tadpole.engine.initialize; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.util.ArrayList; import org.apache.log4j.Logger; import com.hangum.tadpole.commons.libs.core.define.PublicTadpoleDefine; import com.hangum.tadpole.commons.util.ApplicationArgumentUtils; import com.hangum.tadpole.engine.define.DBDefine; import com.hangum.tadpole.engine.query.dao.system.ExternalBrowserInfoDAO; import com.hangum.tadpole.engine.query.dao.system.UserDBDAO; import com.hangum.tadpole.engine.query.sql.TadpoleSystem_UserDBQuery; /** * Add default sample db to user * * @author hangum * */ public class AddDefaultSampleDBToUser { private static final Logger logger = Logger.getLogger(AddDefaultSampleDBToUser.class); private static String strDefaultGroup = "SAMPLE DB"; private static String strDefaultDisplayName = "SAMPLE_Chinnok_Sqlite.sqlite"; private static String strFileName = "Chinook_Sqlite.sqlite"; /** * Sampledb copy * * @param userSeq * @param userEmail * @return */ public static void addUserDefaultDB(int userSeq, String userEmail) throws Exception { String ROOT_RESOURCE_DIR = String.format(ApplicationArgumentUtils.getResourcesDir() + "%s" + PublicTadpoleDefine.DIR_SEPARATOR, userEmail); File fileRootResource = new File(ROOT_RESOURCE_DIR); if(!fileRootResource.isDirectory()) { fileRootResource.mkdirs(); } // 파일을 옮겨 놓는다. copyToSampleDB(ROOT_RESOURCE_DIR); UserDBDAO userDB = new UserDBDAO(); userDB.setDbms_type(DBDefine.SQLite_DEFAULT.getDBToString()); String strUrl = String.format(DBDefine.SQLite_DEFAULT.getDB_URL_INFO(), ROOT_RESOURCE_DIR + strDefaultDisplayName); userDB.setUrl(strUrl); userDB.setDb(strFileName); //$NON-NLS-1$ userDB.setGroup_name(strDefaultGroup); userDB.setDisplay_name(strDefaultDisplayName); userDB.setOperation_type(PublicTadpoleDefine.DBOperationType.DEVELOP.name()); userDB.setRole_id(PublicTadpoleDefine.USER_ROLE_TYPE.ADMIN.toString()); userDB.setPasswd(""); //$NON-NLS-1$ userDB.setUsers(""); //$NON-NLS-1$ userDB.setIs_readOnlyConnect(PublicTadpoleDefine.YES_NO.NO.name()); userDB.setIs_autocommit(PublicTadpoleDefine.YES_NO.YES.name()); userDB.setIs_showtables(PublicTadpoleDefine.YES_NO.YES.name()); userDB.setIs_profile(PublicTadpoleDefine.YES_NO.YES.name()); userDB.setQuestion_dml(PublicTadpoleDefine.YES_NO.NO.name()); userDB.setIs_external_browser(PublicTadpoleDefine.YES_NO.NO.name()); userDB.setListExternalBrowserdao(new ArrayList<ExternalBrowserInfoDAO>()); userDB.setIs_summary_report(PublicTadpoleDefine.YES_NO.NO.name()); userDB.setIs_monitoring(PublicTadpoleDefine.YES_NO.NO.name()); TadpoleSystem_UserDBQuery.newUserDB(userDB, userSeq); } /** * copy to sampel db * * @param toLocation * @throws Exception */ private static void copyToSampleDB(String toLocation) throws Exception { ClassLoader classLoader = TadpoleSystemInitializer.class.getClassLoader(); InputStream is = classLoader.getResourceAsStream("com/hangum/tadpole/engine/initialize/Chinook_Sqlite.sqlite"); byte[] dataByte = new byte[1024]; int len = 0; FileOutputStream fos = new FileOutputStream(toLocation + strDefaultDisplayName); while((len = is.read(dataByte)) > 0) { fos.write(dataByte, 0, len); } fos.close(); is.close(); } }