use of com.varsql.web.exception.VarsqlAppException in project varsql by varsqlinfo.
the class UserPreferencesServiceImpl method updateUserInfo.
/**
* @Method Name : updateUserInfo
* @Method 설명 : 사용자 정보 업데이트
* @작성자 : ytkim
* @작성일 : 2017. 11. 29.
* @변경이력 :
* @param userForm
* @param req
* @param res
* @return
*/
public boolean updateUserInfo(UserModReqeustDTO userForm, HttpServletRequest req, HttpServletResponse res) {
logger.debug("updateUserInfo : {}", userForm);
UserEntity userInfo = userMgmtRepository.findByViewid(SecurityUtil.userViewId());
if (userInfo == null)
throw new VarsqlAppException("user infomation not found : " + SecurityUtil.userViewId());
userInfo.setLang(userForm.getLang());
userInfo.setUname(userForm.getUname());
userInfo.setOrgNm(userForm.getOrgNm());
userInfo.setDeptNm(userForm.getDeptNm());
userInfo.setDescription(userForm.getDescription());
userMgmtRepository.save(userInfo);
// 언어 변경시 처리.
Locale userLocale = LocaleConstants.parseLocaleString(userForm.getLang());
if (userLocale != null && !userLocale.equals(SecurityUtil.loginInfo().getUserLocale())) {
LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(req);
if (localeResolver == null) {
throw new IllegalStateException("No LocaleResolver found.");
}
if (localeResolver.resolveLocale(req) != userLocale) {
localeResolver.setLocale(req, res, userLocale);
}
SecurityUtil.loginInfo().setUserLocale(userLocale);
}
return true;
}
use of com.varsql.web.exception.VarsqlAppException in project varsql by varsqlinfo.
the class AuthDAO method getUserDataBaseInfo.
/**
* @Method Name : getUserDataBaseInfo
* @Method 설명 :
* @작성일 : 2015. 6. 22.
* @작성자 : ytkim
* @변경이력 :
* @return
* @throws SQLException
*/
public void getUserDataBaseInfo() {
Connection conn = ConnectionFactory.getInstance().getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
User user = SecurityUtil.loginInfo();
StringBuffer query = new StringBuffer();
String dbColumnQuery = "select VCONNID, VNAME, VDBSCHEMA, VDBVERSION, BASETABLE_YN, LAZYLOAD_YN,SCHEMA_VIEW_YN, MAX_SELECT_COUNT, USE_COLUMN_LABEL, b.DB_TYPE from VTCONNECTION a left outer join VTDBTYPE_DRIVER_PROVIDER b on a.VDRIVER = b.DRIVER_PROVIDER_ID where USE_YN ='Y' and DEL_YN = 'N' AND ";
query.append(dbColumnQuery);
AuthorityType tmpAuthority = user.getTopAuthority();
if (tmpAuthority.equals(AuthorityType.ADMIN)) {
query.append(" 1 = 1 ");
} else if (tmpAuthority.equals(AuthorityType.GUEST)) {
query.append(" 1 != 1 ");
} else {
query.append(" A.VCONNID IN ( ");
query.append(" select d.VCONNID ");
query.append(" from VTDATABASE_GROUP a inner join VTDATABASE_GROUP_DB b on a.GROUP_ID = b.GROUP_ID ");
query.append(" inner join VTDATABASE_GROUP_USER c on b.GROUP_ID = c.GROUP_ID ");
query.append(" inner join VTCONNECTION d on b.VCONNID = d.VCONNID ");
query.append(" left outer join VTDATABASE_BLOCK_USER e on d.VCONNID = e.VCONNID and c.VIEWID =e.VIEWID ");
query.append(" where c.VIEWID = '" + user.getViewid() + "' ");
query.append(" and e.viewid is null ");
query.append(" and d.USE_YN = 'Y' ");
query.append(" group by d.VCONNID ");
query.append(" ) ");
if (tmpAuthority.equals(AuthorityType.MANAGER)) {
query.append(" union ");
query.append(dbColumnQuery + " A.VCONNID in ( select VCONNID from VTDATABASE_MANAGER where VIEWID = '" + user.getViewid() + "' ) ");
}
}
Map<String, DatabaseInfo> userDatabaseInfo = new LinkedHashMap<String, DatabaseInfo>();
if (!tmpAuthority.equals(AuthorityType.GUEST)) {
pstmt = conn.prepareStatement(query.toString());
rs = pstmt.executeQuery();
String vconnid;
String uuid = "";
String viewid = user.getViewid();
Map<String, String> vconnidNconuid = new HashMap<>();
List<String> newVconnidList = new ArrayList<String>();
while (rs.next()) {
vconnid = rs.getString(VarsqlKeyConstants.CONN_ID);
newVconnidList.add(vconnid);
uuid = UUIDUtil.vconnidUUID(viewid, vconnid);
try {
userDatabaseInfo.put(uuid, new DatabaseInfo(vconnid, uuid, rs.getString("DB_TYPE"), rs.getString(VarsqlKeyConstants.CONN_NAME), rs.getString(VarsqlKeyConstants.CONN_DBSCHEMA), rs.getString(VarsqlKeyConstants.CONN_BASETABLE_YN), rs.getString(VarsqlKeyConstants.CONN_LAZYLOAD_YN), rs.getLong(VarsqlKeyConstants.CONN_VDBVERSION), rs.getString(VarsqlKeyConstants.CONN_SCHEMA_VIEW_YN), rs.getInt(VarsqlKeyConstants.CONN_MAX_SELECT_COUNT), rs.getString(VarsqlKeyConstants.CONN_USE_COLUMN_LABEL)));
vconnidNconuid.put(vconnid, uuid);
} catch (Exception e) {
logger.error("DatabaseInfo not valid : " + vconnid);
}
}
user.setDatabaseInfo(userDatabaseInfo);
user.setVconnidNconuid(vconnidNconuid);
}
} catch (SQLException e) {
throw new VarsqlAppException("database load exception : " + e.getMessage(), e);
} finally {
JdbcUtils.close(conn, pstmt, rs);
}
}
use of com.varsql.web.exception.VarsqlAppException in project varsql by varsqlinfo.
the class FileServiceUtils method getSaveRelativePath.
/**
* @method : getSaveRelativePath
* @desc : save
* @author : ytkim
* @date : 2021. 1. 3.
* @param div
* @return
* @throws IOException
*/
public static String getSaveRelativePath(String div) {
String relativePath = FileUtils.getSaveDayPath(div);
Path fileExportPath = getUploadRootPath().resolve(relativePath);
if (Files.notExists(fileExportPath)) {
try {
Files.createDirectories(fileExportPath);
} catch (IOException e) {
throw new VarsqlAppException(e.getMessage(), e);
}
}
return relativePath;
}
use of com.varsql.web.exception.VarsqlAppException in project varsql by varsqlinfo.
the class SQLServiceImpl method dataExport.
/**
* 데이터 내보내기.
* @param paramMap
* @param req
*/
@SuppressWarnings("rawtypes")
public void dataExport(ParamMap paramMap, SqlExecuteDTO sqlExecuteInfo, HttpServletRequest req, HttpServletResponse res) throws Exception {
String objectName = sqlExecuteInfo.getObjectName();
if (!sqlExecuteInfo.getBaseSchema().equals(sqlExecuteInfo.getSchema())) {
objectName = sqlExecuteInfo.getSchema() + "." + objectName;
}
StringBuilder reqQuerySb = new StringBuilder().append("select * from ").append(objectName).append(" where 1=1 ");
String conditionQuery = paramMap.getString("conditionQuery");
if (!StringUtils.isBlank(conditionQuery)) {
conditionQuery = StringUtils.lTrim(conditionQuery);
if (conditionQuery.startsWith("where")) {
conditionQuery = conditionQuery.replaceFirst("where", "");
}
if (conditionQuery.startsWith("and")) {
conditionQuery = conditionQuery.replaceFirst("and", "");
}
conditionQuery = " and " + conditionQuery;
reqQuerySb.append(conditionQuery);
}
sqlExecuteInfo.setSqlParam("{}");
sqlExecuteInfo.setSql(reqQuerySb.toString());
String exportCharset = paramMap.getString("charset", VarsqlConstants.CHAR_SET);
OutputStream outstream = null;
AbstractWriter writer = null;
try {
VarsqlFileType exportType = sqlExecuteInfo.getExportType();
Path fileExportPath = FileServiceUtils.getSavePath(UploadFileType.EXPORT);
String downloadFilePath = FileUtils.pathConcat(fileExportPath.toAbsolutePath().toString(), exportType.concatExtension(VartechUtils.generateUUID()));
outstream = new FileOutputStream(downloadFilePath);
if (VarsqlFileType.CSV.equals(exportType)) {
writer = new CSVWriter(outstream, ',', exportCharset);
} else if (VarsqlFileType.JSON.equals(exportType)) {
writer = new JSONWriter(outstream, "row", exportCharset);
} else if (VarsqlFileType.XML.equals(exportType)) {
writer = new XMLWriter(outstream, "row", exportCharset);
} else if (VarsqlFileType.EXCEL.equals(exportType)) {
writer = new ExcelWriter(outstream);
} else {
writer = new SQLWriter(outstream, DBType.getDBType(sqlExecuteInfo.getDbType()), objectName, exportCharset);
}
logger.debug("data export downloadFilePath :{} , query : {}", downloadFilePath, sqlExecuteInfo.getSql());
final String tableName = objectName;
SQLExecuteResult ser = new SelectExecutor().execute(sqlExecuteInfo, new AbstractSQLExecutorHandler(writer) {
private boolean firstFlag = true;
@Override
public boolean handle(SQLHandlerParameter handleParam) {
if (firstFlag) {
WriteMetadataInfo whi = new WriteMetadataInfo("exportInfo");
List<ExportColumnInfo> columns = new LinkedList<ExportColumnInfo>();
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(whi);
if (VarsqlFileType.SQL.equals(exportType)) {
((SQLWriter) getWriter()).setColumnInfos(handleParam.getColumnInfoList());
}
firstFlag = false;
}
try {
getWriter().addRow(handleParam.getRowObject());
} catch (IOException e) {
logger.error(e.getMessage(), e);
return false;
}
return true;
}
});
writer.writeAndClose();
if (ser.getResultCode() != null) {
throw new DataDownloadException(ser.getResultCode(), ser.getMessage(), new VarsqlAppException(ser.getMessage()));
}
String exportFileName = ValidateUtils.getValidFileName(paramMap.getString("fileName", objectName));
VarsqlUtils.setResponseDownAttr(res, req, exportType.concatExtension(exportFileName));
try (FileInputStream fileInputStream = new FileInputStream(new File(downloadFilePath));
OutputStream downloadStream = res.getOutputStream()) {
byte[] buf = new byte[8192];
int read = 0;
while ((read = fileInputStream.read(buf)) != -1) {
downloadStream.write(buf, 0, read);
}
downloadStream.flush();
downloadStream.close();
fileInputStream.close();
}
} catch (Exception e) {
throw e;
} finally {
IOUtils.close(writer);
IOUtils.close(outstream);
}
}
Aggregations