Search in sources :

Example 6 with DatabaseInfo

use of com.varsql.core.db.valueobject.DatabaseInfo in project varsql by varsqlinfo.

the class BaseExecutorTest method testSelect.

@Test
// @Ignore
void testSelect() {
    ConnectionInfo connInfo = getBaseConnection();
    try {
        DatabaseInfo di = getDatabaseInfo(connInfo);
        SqlStatementInfo sqi = new SqlStatementInfo();
        sqi.setSchema("PUBLIC");
        sqi.setConuid(connInfo.getConnid(), TEST_CON_UID, di);
        SQLExecutor baseExecutor = new SelectExecutor();
        sqi.setSqlParam("{}");
        sqi.setSql("select * from test2222");
        SQLWriter writer = new SQLWriter(new FileOutputStream(new File("c:/zzz/exportInsertQuery.sql")), DBType.getDBType(sqi.getDbType()), "test2222");
        AbstractSQLExecutorHandler handler = new AbstractSQLExecutorHandler() {

            private boolean firstFlag = true;

            @Override
            public boolean handle(SQLHandlerParameter handleParam) {
                if (firstFlag) {
                    writer.setColumnInfos(handleParam.getColumnInfoList());
                    firstFlag = false;
                }
                try {
                    writer.addRow(handleParam.getRowObject());
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                return true;
            }
        };
        SQLExecuteResult ser = baseExecutor.execute(sqi, handler);
        writer.write();
        System.out.println("testUpdate ser.getTotalCount(): " + ser.getTotalCount());
        System.out.println("testSelect ser.getResult(): " + ser.getResult());
    } catch (Exception e) {
        e.printStackTrace();
    }
}
Also used : SqlStatementInfo(com.varsql.core.db.valueobject.SqlStatementInfo) DatabaseInfo(com.varsql.core.db.valueobject.DatabaseInfo) SQLHandlerParameter(com.varsql.core.sql.executor.handler.SQLHandlerParameter) IOException(java.io.IOException) IOException(java.io.IOException) AbstractSQLExecutorHandler(com.varsql.core.sql.executor.handler.AbstractSQLExecutorHandler) SQLWriter(com.varsql.core.data.writer.SQLWriter) FileOutputStream(java.io.FileOutputStream) ConnectionInfo(com.varsql.core.connection.beans.ConnectionInfo) File(java.io.File) Test(org.junit.jupiter.api.Test) BaseTest(com.varsql.core.test.BaseTest)

Example 7 with DatabaseInfo

use of com.varsql.core.db.valueobject.DatabaseInfo in project varsql by varsqlinfo.

the class ExportServiceImpl method downloadTableData2.

public ResponseResult downloadTableData2(PreferencesRequestDTO preferencesInfo, HttpServletRequest req, HttpServletResponse res) throws Exception {
    DataDownloadInfo ddi = VartechUtils.jsonStringToObject(preferencesInfo.getPrefVal(), DataDownloadInfo.class, true);
    DatabaseInfo databaseInfo = SecurityUtil.loginInfo().getDatabaseInfo().get(ddi.getConuid());
    logger.debug("downloadTableData : {}", preferencesInfo.getPrefVal());
    String prefixSchema = StringUtils.isBlank(ddi.getSchema()) ? "" : ddi.getSchema() + ".";
    String charset = StringUtils.isBlank(ddi.getCharset()) ? VarsqlConstants.CHAR_SET : ddi.getCharset();
    String exportFileName = ValidateUtils.getValidFileName(ddi.getFileName());
    String fileId = VartechUtils.generateUUID();
    Path fileExportPath = FileServiceUtils.getSavePath(UploadFileType.EXPORT);
    File zipFile = new File(FileUtils.pathConcat(fileExportPath.toAbsolutePath().toString(), VarsqlFileType.ZIP.concatExtension(fileId)));
    int bufferSize = 2048;
    final VarsqlFileType exportType = ddi.getExportType();
    DBType dbType = DBType.getDBType(databaseInfo.getType());
    String requid = ddi.getRequid();
    ProgressInfo progressInfo = new ProgressInfo();
    progressInfo.setTotalItemSize(ddi.getItems().size());
    String sessAttrKey = HttpSessionConstants.progressKey(requid);
    System.out.println("downloadTableData2 sessAttrKey : " + sessAttrKey);
    HttpSession session = req.getSession();
    session.setAttribute(sessAttrKey, progressInfo);
    try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile), Charset.forName(charset))) {
        int idx = 0;
        for (DownloadItemInfo item : ddi.getItems()) {
            ++idx;
            SqlExecuteDTO seDto = new SqlExecuteDTO();
            seDto.setLimit(ddi.getLimit());
            seDto.setConuid(ddi.getConuid(), exportFileName, databaseInfo);
            String objectName = prefixSchema + item.getName();
            seDto.setSqlParam("{}");
            seDto.setSql(SQLUtils.generateSelectQuery(objectName, item.getCondition(), dbType));
            String downloadFilePath = FileUtils.pathConcat(fileExportPath.toAbsolutePath().toString(), exportType.concatExtension(VartechUtils.generateUUID()));
            progressInfo.setName(item.getName());
            progressInfo.setItemIdx(idx);
            AbstractWriter writer = null;
            try (OutputStream outstream = new FileOutputStream(downloadFilePath)) {
                if (VarsqlFileType.CSV.equals(exportType)) {
                    writer = new CSVWriter(outstream, ',', charset);
                } else if (VarsqlFileType.JSON.equals(exportType)) {
                    writer = new JSONWriter(outstream, "row", charset);
                } else if (VarsqlFileType.XML.equals(exportType)) {
                    writer = new XMLWriter(outstream, "row", charset);
                } else if (VarsqlFileType.EXCEL.equals(exportType)) {
                    writer = new ExcelWriter(outstream);
                } else {
                    writer = new SQLWriter(outstream, dbType, objectName, charset);
                }
                logger.debug("data export downloadFilePath :{} , query : {}", downloadFilePath, seDto.getSql());
                final String tableName = item.getName();
                SQLExecuteResult ser = (new SelectExecutor()).execute(seDto, new AbstractSQLExecutorHandler(writer) {

                    private boolean firstFlag = true;

                    private int rowIdx = 0;

                    public boolean handle(SQLHandlerParameter handleParam) {
                        if (this.firstFlag) {
                            WriteMetadataInfo whi = new WriteMetadataInfo("exportInfo");
                            List<ExportColumnInfo> columns = new LinkedList<>();
                            handleParam.getColumnInfoList().forEach(item -> {
                                ExportColumnInfo gci = new ExportColumnInfo();
                                gci.setName(item.getLabel());
                                // 추가 할것.
                                gci.setAlias(item.getKey());
                                gci.setType(item.getDbType());
                                gci.setNumber(item.isNumber());
                                gci.setLob(item.isLob());
                                columns.add(gci);
                            });
                            whi.addMetedata("tableName", tableName);
                            whi.addMetedata("columns", columns);
                            getWriter().setMetadata(new WriteMetadataInfo[] { whi });
                            if (VarsqlFileType.SQL.equals(exportType)) {
                                ((SQLWriter) getWriter()).setColumnInfos(handleParam.getColumnInfoList());
                            }
                            this.firstFlag = false;
                        }
                        progressInfo.setProgressContentLength(++rowIdx);
                        try {
                            getWriter().addRow(handleParam.getRowObject());
                        } catch (IOException e) {
                            logger.error(e.getMessage(), e);
                            return false;
                        }
                        return true;
                    }
                });
                writer.writeAndClose();
                String zipFileName = exportType.concatExtension(item.getName());
                if (ser.getResultCode() != null) {
                    VarsqlUtils.textDownload(new FileOutputStream(downloadFilePath), ser.getMessage());
                    zipFileName = item.getName() + "-export-error.txt";
                }
                try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(downloadFilePath))) {
                    ZipEntry zentry = new ZipEntry(zipFileName);
                    zentry.setSize(new File(downloadFilePath).length());
                    zos.putNextEntry(zentry);
                    byte[] buffer = new byte[bufferSize];
                    int cnt = 0;
                    while ((cnt = bis.read(buffer, 0, bufferSize)) != -1) {
                        zos.write(buffer, 0, cnt);
                    }
                    zos.closeEntry();
                }
                new File(downloadFilePath).delete();
            } catch (Exception e) {
                throw e;
            } finally {
                IOUtils.close(writer);
            }
        }
        IOUtils.close(zos);
    }
    FileInfoEntity fie = FileInfoEntity.builder().fileId(fileId).fileContId(fileId).contGroupId(databaseInfo.getVconnid()).fileDiv(UploadFileType.EXPORT.getDiv()).fileFieldName("downloadZipFile").fileName(VarsqlFileType.ZIP.concatExtension(exportFileName)).fileSize(zipFile.length()).fileExt(VarsqlFileType.ZIP.getExtension()).filePath(FileUtils.pathConcat(FileServiceUtils.getSaveRelativePath(UploadFileType.EXPORT), zipFile.getName())).build();
    fileInfoEntityRepository.save(fie);
    session.setAttribute(sessAttrKey, "complete");
    return VarsqlUtils.getResponseResultItemOne(fie);
}
Also used : JSONWriter(com.vartech.common.io.writer.JSONWriter) SelectExecutor(com.varsql.core.sql.executor.SelectExecutor) ExportColumnInfo(com.varsql.core.sql.beans.ExportColumnInfo) Arrays(java.util.Arrays) MetaControlBean(com.varsql.core.db.MetaControlBean) DatabaseParamInfo(com.varsql.core.db.valueobject.DatabaseParamInfo) BufferedInputStream(java.io.BufferedInputStream) WriteMetadataInfo(com.vartech.common.io.writer.WriteMetadataInfo) LoggerFactory(org.slf4j.LoggerFactory) Autowired(org.springframework.beans.factory.annotation.Autowired) VarsqlUtils(com.varsql.web.util.VarsqlUtils) ModelMap(org.springframework.ui.ModelMap) DatabaseInfo(com.varsql.core.db.valueobject.DatabaseInfo) ObjectType(com.varsql.core.db.servicemenu.ObjectType) DataCommonVO(com.varsql.web.common.beans.DataCommonVO) DownloadItemInfo(com.varsql.web.dto.DownloadItemInfo) Map(java.util.Map) SQLUtils(com.varsql.core.sql.util.SQLUtils) VarsqlReportConfig(com.varsql.core.db.report.VarsqlReportConfig) JSONWriter(com.vartech.common.io.writer.JSONWriter) XMLWriter(com.vartech.common.io.writer.XMLWriter) Path(java.nio.file.Path) ZipEntry(java.util.zip.ZipEntry) HttpSession(javax.servlet.http.HttpSession) DataDownloadInfo(com.varsql.web.dto.DataDownloadInfo) PreferencesConstants(com.varsql.web.constants.PreferencesConstants) ProgressInfo(com.varsql.core.common.beans.ProgressInfo) VarsqlFileType(com.varsql.core.common.code.VarsqlFileType) Collectors(java.util.stream.Collectors) CSVWriter(com.vartech.common.io.writer.CSVWriter) DDLCreateOption(com.varsql.core.db.valueobject.ddl.DDLCreateOption) List(java.util.List) ZipOutputStream(java.util.zip.ZipOutputStream) DDLInfo(com.varsql.core.db.valueobject.ddl.DDLInfo) FileInfoEntity(com.varsql.web.model.entity.app.FileInfoEntity) ExcelWriter(com.vartech.common.io.writer.ExcelWriter) IOUtils(com.vartech.common.utils.IOUtils) SQLWriter(com.varsql.core.data.writer.SQLWriter) ValidateUtils(com.varsql.web.util.ValidateUtils) HashMap(java.util.HashMap) ResponseResult(com.vartech.common.app.beans.ResponseResult) SQLExecuteResult(com.varsql.core.sql.executor.SQLExecuteResult) FileUtils(com.vartech.common.utils.FileUtils) BufferedOutputStream(java.io.BufferedOutputStream) SecurityUtil(com.varsql.core.common.util.SecurityUtil) VartechUtils(com.vartech.common.utils.VartechUtils) HttpServletRequest(javax.servlet.http.HttpServletRequest) UploadFileType(com.varsql.web.constants.UploadFileType) Charset(java.nio.charset.Charset) BlankConstants(com.varsql.core.common.constants.BlankConstants) AbstractWriter(com.vartech.common.io.writer.AbstractWriter) Service(org.springframework.stereotype.Service) LinkedList(java.util.LinkedList) HttpSessionConstants(com.varsql.web.constants.HttpSessionConstants) EnumMapperValue(com.vartech.common.app.beans.EnumMapperValue) OutputStream(java.io.OutputStream) Logger(org.slf4j.Logger) Iterator(java.util.Iterator) FileServiceUtils(com.varsql.web.util.FileServiceUtils) StringUtils(com.vartech.common.utils.StringUtils) HttpServletResponse(javax.servlet.http.HttpServletResponse) VarsqlConstants(com.varsql.core.common.constants.VarsqlConstants) FileOutputStream(java.io.FileOutputStream) IOException(java.io.IOException) FileInputStream(java.io.FileInputStream) File(java.io.File) PreferencesRequestDTO(com.varsql.web.dto.user.PreferencesRequestDTO) SQLHandlerParameter(com.varsql.core.sql.executor.handler.SQLHandlerParameter) DBType(com.varsql.core.db.DBType) MetaControlFactory(com.varsql.core.db.MetaControlFactory) FileInfoEntityRepository(com.varsql.web.repository.user.FileInfoEntityRepository) SqlExecuteDTO(com.varsql.web.dto.sql.SqlExecuteDTO) SelectExecutor(com.varsql.core.sql.executor.SelectExecutor) AbstractSQLExecutorHandler(com.varsql.core.sql.executor.handler.AbstractSQLExecutorHandler) ExcelReport(com.vartech.common.excel.ExcelReport) DatabaseInfo(com.varsql.core.db.valueobject.DatabaseInfo) ZipOutputStream(java.util.zip.ZipOutputStream) BufferedOutputStream(java.io.BufferedOutputStream) OutputStream(java.io.OutputStream) FileOutputStream(java.io.FileOutputStream) ExcelWriter(com.vartech.common.io.writer.ExcelWriter) SQLHandlerParameter(com.varsql.core.sql.executor.handler.SQLHandlerParameter) WriteMetadataInfo(com.vartech.common.io.writer.WriteMetadataInfo) ZipEntry(java.util.zip.ZipEntry) CSVWriter(com.vartech.common.io.writer.CSVWriter) DBType(com.varsql.core.db.DBType) AbstractWriter(com.vartech.common.io.writer.AbstractWriter) XMLWriter(com.vartech.common.io.writer.XMLWriter) VarsqlFileType(com.varsql.core.common.code.VarsqlFileType) AbstractSQLExecutorHandler(com.varsql.core.sql.executor.handler.AbstractSQLExecutorHandler) ExportColumnInfo(com.varsql.core.sql.beans.ExportColumnInfo) BufferedInputStream(java.io.BufferedInputStream) ProgressInfo(com.varsql.core.common.beans.ProgressInfo) List(java.util.List) LinkedList(java.util.LinkedList) FileInfoEntity(com.varsql.web.model.entity.app.FileInfoEntity) DownloadItemInfo(com.varsql.web.dto.DownloadItemInfo) Path(java.nio.file.Path) SqlExecuteDTO(com.varsql.web.dto.sql.SqlExecuteDTO) HttpSession(javax.servlet.http.HttpSession) DataDownloadInfo(com.varsql.web.dto.DataDownloadInfo) IOException(java.io.IOException) FileInputStream(java.io.FileInputStream) IOException(java.io.IOException) ZipOutputStream(java.util.zip.ZipOutputStream) FileOutputStream(java.io.FileOutputStream) SQLWriter(com.varsql.core.data.writer.SQLWriter) SQLExecuteResult(com.varsql.core.sql.executor.SQLExecuteResult) File(java.io.File)

Example 8 with DatabaseInfo

use of com.varsql.core.db.valueobject.DatabaseInfo in project varsql by varsqlinfo.

the class UserMainController method connectionInfo.

/**
 * @Method Name  : connectionInfo
 * @Method 설명 : 사용자 권한 있는 db 정보.
 * @작성자   : ytkim
 * @작성일   : 2019. 8. 16.
 * @변경이력  :
 * @param req
 * @return
 * @throws Exception
 */
@RequestMapping(value = "/connectionInfo", method = RequestMethod.POST)
@ResponseBody
public ResponseResult connectionInfo(HttpServletRequest req) throws Exception {
    ResponseResult resultObject = new ResponseResult();
    DatabaseUtils.reloadUserDatabaseInfo();
    Collection<DatabaseInfo> dataBaseInfo = SecurityUtil.loginInfo(req).getDatabaseInfo().values();
    List<HashMap<String, String>> databaseList = new ArrayList<>();
    dataBaseInfo.forEach(item -> {
        HashMap<String, String> addMap = new HashMap<>();
        addMap.put("uuid", item.getConnUUID());
        addMap.put("type", item.getType());
        addMap.put("name", item.getName());
        databaseList.add(addMap);
    });
    resultObject.setItemList(databaseList);
    return resultObject;
}
Also used : DatabaseInfo(com.varsql.core.db.valueobject.DatabaseInfo) HashMap(java.util.HashMap) ResponseResult(com.vartech.common.app.beans.ResponseResult) ArrayList(java.util.ArrayList) RequestMapping(org.springframework.web.bind.annotation.RequestMapping) ResponseBody(org.springframework.web.bind.annotation.ResponseBody)

Example 9 with DatabaseInfo

use of com.varsql.core.db.valueobject.DatabaseInfo in project varsql by varsqlinfo.

the class DbDiffServiceImpl method getDatabaseParamInfo.

private DatabaseParamInfo getDatabaseParamInfo(DBConnectionEntity vtConnRVO) {
    DatabaseParamInfo dpi = new DatabaseParamInfo();
    dpi.setConuid(null, SecurityUtil.loginInfo().getViewid(), new DatabaseInfo(vtConnRVO.getVconnid(), null, vtConnRVO.getDbTypeDriverProvider().getDbType(), vtConnRVO.getVname(), vtConnRVO.getVdbschema(), vtConnRVO.getBasetableYn(), vtConnRVO.getLazyloadYn(), ConvertUtils.longValueOf(vtConnRVO.getVdbversion()), vtConnRVO.getSchemaViewYn(), ConvertUtils.intValue(vtConnRVO.getMaxSelectCount()), vtConnRVO.getUseColumnLabel()));
    return dpi;
}
Also used : DatabaseInfo(com.varsql.core.db.valueobject.DatabaseInfo) DatabaseParamInfo(com.varsql.core.db.valueobject.DatabaseParamInfo)

Example 10 with DatabaseInfo

use of com.varsql.core.db.valueobject.DatabaseInfo in project varsql by varsqlinfo.

the class SQLManagerTest method test.

@Ignore
@Test
void test() {
    ConnectionInfo connInfo = getBaseConnection();
    try {
        DatabaseInfo di = getDatabaseInfo(connInfo);
        DatabaseParamInfo dpi = new DatabaseParamInfo();
        dpi.setSchema("PUBLIC");
        dpi.setConuid(connInfo.getConnid(), TEST_CON_UID, di);
        for (int i = 0; i < 10; i++) {
            // System.out.println(MetaControlFactory.getDbInstanceFactory(DBType.H2).getSchemas(dpi) + "  :: " +MetaControlFactory.getDbInstanceFactory(DBType.OTHER).getSchemas(dpi));
            List<TableInfo> tblList = MetaControlFactory.getDbInstanceFactory(DBType.OTHER).getDBObjectMeta("table", dpi);
            System.out.println(i + " : tblList.size() : " + tblList.size());
            if (i % 1000 == 0) {
                System.out.println("111111111111");
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}
Also used : DatabaseInfo(com.varsql.core.db.valueobject.DatabaseInfo) TableInfo(com.varsql.core.db.valueobject.TableInfo) ConnectionInfo(com.varsql.core.connection.beans.ConnectionInfo) DatabaseParamInfo(com.varsql.core.db.valueobject.DatabaseParamInfo) Ignore(org.junit.Ignore) Test(org.junit.jupiter.api.Test) BaseTest(com.varsql.core.test.BaseTest)

Aggregations

DatabaseInfo (com.varsql.core.db.valueobject.DatabaseInfo)10 HashMap (java.util.HashMap)5 ConnectionInfo (com.varsql.core.connection.beans.ConnectionInfo)3 DatabaseParamInfo (com.varsql.core.db.valueobject.DatabaseParamInfo)3 AbstractSQLExecutorHandler (com.varsql.core.sql.executor.handler.AbstractSQLExecutorHandler)3 SQLHandlerParameter (com.varsql.core.sql.executor.handler.SQLHandlerParameter)3 ResponseResult (com.vartech.common.app.beans.ResponseResult)3 ArrayList (java.util.ArrayList)3 User (com.varsql.core.auth.User)2 SQLWriter (com.varsql.core.data.writer.SQLWriter)2 MetaControlBean (com.varsql.core.db.MetaControlBean)2 SqlStatementInfo (com.varsql.core.db.valueobject.SqlStatementInfo)2 BaseTest (com.varsql.core.test.BaseTest)2 IOException (java.io.IOException)2 Connection (java.sql.Connection)2 SQLException (java.sql.SQLException)2 LinkedHashMap (java.util.LinkedHashMap)2 Map (java.util.Map)2 AuthorityType (com.varsql.core.auth.AuthorityType)1 ProgressInfo (com.varsql.core.common.beans.ProgressInfo)1