Commit 01bd37c9 authored by linhuazhu's avatar linhuazhu

first commit

parents
This diff is collapsed.
template: Hello, %s!
defaultName: Stranger
server:
type: default
maxThreads: 8
hbaseDatabase:
driverClass: org.apache.phoenix.jdbc.PhoenixDriver
user: ''
password: ''
url: jdbc:phoenix:localhost:2181
properties:
charSet: UTF-8
marsDatabase:
driverClass: com.mysql.cj.jdbc.Driver
user: 'work'
password: 'workwork'
url: jdbc:mysql://rdsmaqevmuzj6jy.mysql.rds.aliyuncs.com/hera_test
properties:
charSet: UTF-8
zhengxingDatabase:
driverClass: com.mysql.cj.jdbc.Driver
user: 'work'
password: 'workwork'
url: jdbc:mysql://rdsmaqevmuzj6jy.mysql.rds.aliyuncs.com/zhengxing_test
properties:
charSet: UTF-8
hiveMetastore:
driverClass: com.mysql.cj.jdbc.Driver
user: 'work'
password: 'workwork'
url: jdbc:mysql://rdsmaqevmuzj6jy.mysql.rds.aliyuncs.com/hera_test
properties:
charSet: UTF-8
hiveDatabase:
driverClass: org.apache.hive.jdbc.HiveDriver
user: 'feeling'
password: ''
url: jdbc:hive2://127.0.0.1:10000/default
validationQuery: "explain select 1"
validationInterval: "12 hours"
initialSize: 5
minSize: 1
# Logging settings.
logging:
# The default level of all loggers. Can be OFF, ERROR, WARN, INFO, DEBUG, TRACE, or ALL.
level: INFO
# Logger-specific levels.
loggers:
"org.skife.jdbi.v2": TRACE
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<artifactId>data-monitor</artifactId>
<groupId>com.gmei.data</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>server</artifactId>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer />
<transformer>
<mainClass>ServerApplication</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
<configuration>
<createDependencyReducedPom>true</createDependencyReducedPom>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-it</artifactId>
<version>1.2.0-cdh5.9.0</version>
<type>test-jar</type>
<scope>compile</scope>
<exclusions>
<exclusion>
<artifactId>jruby-complete</artifactId>
<groupId>org.jruby</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-server</artifactId>
<version>1.2.0-cdh5.9.0</version>
<type>test-jar</type>
<scope>compile</scope>
</dependency>
</dependencies>
<properties>
<dropwizard.version>0.7.0</dropwizard.version>
<hadoop-two.version>2.6.0-cdh5.9.0</hadoop-two.version>
<slf4j.version>1.7.16</slf4j.version>
<hbase.version>1.2.0-cdh5.9.0</hbase.version>
<log4j.version>1.2.17</log4j.version>
<commons-logging.version>1.2</commons-logging.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
This diff is collapsed.
/**
* Created by feeling on 17/12/7.
*/
import db.*;
import io.dropwizard.Application;
import io.dropwizard.jdbi.DBIFactory;
import io.dropwizard.setup.Bootstrap;
import io.dropwizard.setup.Environment;
import config.MonitorConfiguration;
import org.skife.jdbi.v2.DBI;
import org.skife.jdbi.v2.Handle;
import org.skife.jdbi.v2.sqlobject.Bind;
import org.skife.jdbi.v2.sqlobject.SqlQuery;
import org.skife.jdbi.v2.sqlobject.SqlUpdate;
import org.skife.jdbi.v2.util.StringMapper;
import resources.HBaseMetastoreResource;
import resources.HelloWorldResource;
import health.TemplateHealthCheck;
import resources.HiveMetastoreResource;
import resources.TemplateResource;
import tasks.EchoTask;
import utils.DBInstanceManager;
import javax.sql.DataSource;
import java.sql.*;
import java.util.HashMap;
import java.util.List;
import java.util.Properties;
public class ServerApplication extends Application<MonitorConfiguration>{
public static void main(String[] args) throws Exception {
new ServerApplication().run(args);
}
@Override
public String getName() {
return "hello-world";
}
@Override
public void initialize(Bootstrap<MonitorConfiguration> bootstrap) {
// nothing to do yet
}
@Override
public void run(MonitorConfiguration configuration,
Environment environment) throws ClassNotFoundException,SQLException {
try {
String driverName = "org.apache.hive.jdbc.HiveDriver";
Class.forName(driverName);
}
catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
final DBI hbaseDbi = new DBIFactory().build(environment, configuration.getHbaseDatabase(), "hbase");
final DBI zhengxingDbi = new DBIFactory().build(environment, configuration.getZhengxingDatabase(), "zhengxing");
final DBI marsDbi = new DBIFactory().build(environment, configuration.getMarsDatabase(), "mars");
final DBI hiveDbi = new DBIFactory().build(environment, configuration.getHiveDatabase(), "hive");
final DBI hiveMetastoreDBi = new DBIFactory().build(environment, configuration.getHiveMetastore(), "hiveMeta");
final HashMap<String, DBI> dbiMap = new HashMap<String, DBI>(){{
put("hbase", hbaseDbi);
put("mars", marsDbi);
put("zhengxing", zhengxingDbi);
put("hive", hiveDbi);
put("hiveMeta", hiveMetastoreDBi);
}};
this.registerDAO(dbiMap);
// final TemplateHealthCheck healthCheck = new TemplateHealthCheck(configuration.getTemplate());
// environment.healthChecks().register("template", healthCheck);
final HelloWorldResource resource = new HelloWorldResource(
configuration.getTemplate(),
configuration.getDefaultName()
);
environment.admin().addTask(new EchoTask());
environment.jersey().register(resource);
environment.jersey().register(new TemplateResource(dbiMap));
environment.jersey().register(new HiveMetastoreResource(dbiMap));
environment.jersey().register(new HBaseMetastoreResource(dbiMap));
}
private void registerDAO(HashMap<String, DBI> dbiHashMap) {
DAOManager.INSTANCE.addDAO(TemplateDAO.class, dbiHashMap.get("mars"));
DAOManager.INSTANCE.addDAO(TemplateResultDAO.class, dbiHashMap.get("mars"));
DAOManager.INSTANCE.addDAO(TemplateUserDAO.class, dbiHashMap.get("mars"));
DAOManager.INSTANCE.addDAO(TemplateCustomSqlDAO.class, dbiHashMap.get("mars"));
DAOManager.INSTANCE.addDAO(CustomMetaDataDAO.class, dbiHashMap.get("mars"));
DAOManager.INSTANCE.addDAO(MarsUserDAO.class, dbiHashMap.get("zhengxing"));
DAOManager.INSTANCE.addDAO(HiveMetaColumnDAO.class, dbiHashMap.get("hiveMeta"));
DAOManager.INSTANCE.addDAO(HiveMetaTblDAO.class, dbiHashMap.get("hiveMeta"));
}
private void testConnectHive() throws SQLException {
try {
String driverName = "org.apache.hive.jdbc.HiveDriver";
Class.forName(driverName);
}
catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
String showTableSql = "show tables";
Connection con = DriverManager.getConnection("jdbc:hive2://127.0.0.1:10000/default", "feeling", "");
PreparedStatement stmt = con.prepareStatement(showTableSql);
ResultSet resultSet = stmt.executeQuery();
while (resultSet.next()) {
System.out.println(resultSet.getString(1));
}
}
}
package config;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.dropwizard.Configuration;
import io.dropwizard.db.DataSourceFactory;
import org.hibernate.validator.constraints.NotEmpty;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
/**
* Created by feeling on 17/12/14.
*/
public class MonitorConfiguration extends Configuration {
@NotEmpty
private String template;
@NotEmpty
private String defaultName = "Stranger";
@JsonProperty
public String getTemplate() {
return template;
}
@JsonProperty
public void setTemplate(String template) {
this.template = template;
}
@JsonProperty
public String getDefaultName() {
return defaultName;
}
@JsonProperty
public void setDefaultName(String name) {
this.defaultName = name;
}
@Valid
@NotNull
@JsonProperty("marsDatabase")
private DataSourceFactory marsDatabase = new DataSourceFactory();
public DataSourceFactory getMarsDatabase() {
return marsDatabase;
}
@Valid
@NotNull
@JsonProperty("hbaseDatabase")
private DataSourceFactory hbaseDatabase = new DataSourceFactory();
public DataSourceFactory getHbaseDatabase() {
return hbaseDatabase;
}
@Valid
@NotNull
@JsonProperty("zhengxingDatabase")
private DataSourceFactory zhengxingDatabase = new DataSourceFactory();
public DataSourceFactory getZhengxingDatabase() {
return zhengxingDatabase;
}
@Valid
@NotNull
@JsonProperty("hiveDatabase")
private DataSourceFactory hiveDatabase = new DataSourceFactory();
public DataSourceFactory getHiveDatabase() {
return hiveDatabase;
}
@Valid
@NotNull
@JsonProperty("hiveMetastore")
private DataSourceFactory hiveMetastore = new DataSourceFactory();
public DataSourceFactory getHiveMetastore() {
return hiveMetastore;
}
}
package core;
/**
* Created by feeling on 17/12/7.
*/
import com.fasterxml.jackson.annotation.JsonProperty;
import org.hibernate.validator.constraints.Length;
public class Saying {
private long id;
@Length(max = 3)
private String content;
public Saying() {
// Jackson deserialization
}
public Saying(long id, String content) {
this.id = id;
this.content = content;
}
@JsonProperty
public long getId() {
return id;
}
@JsonProperty
public String getContent() {
return content;
}
}
package db;
import org.skife.jdbi.v2.sqlobject.Bind;
import org.skife.jdbi.v2.sqlobject.GetGeneratedKeys;
import org.skife.jdbi.v2.sqlobject.SqlQuery;
import org.skife.jdbi.v2.sqlobject.SqlUpdate;
import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
import pojo.mapper.CustomMetaDataMapper;
import pojo.model.CustomMetaData;
import java.util.List;
/**
* Created by feeling on 17/12/22.
*/
public interface CustomMetaDataDAO {
@SqlQuery("select * from monitor_metadata where id =:id and is_delete =:is_delete")
@RegisterMapper(CustomMetaDataMapper.class)
CustomMetaData getDataById(@Bind("id") Integer id, @Bind("is_delete") Integer isDelete);
@SqlQuery("select * from monitor_metadata where is_delete =:is_delete")
@RegisterMapper(CustomMetaDataMapper.class)
List<CustomMetaData> getAll(@Bind("is_delete") Integer isDelete);
@SqlUpdate("update monitor_metadata set name =:name, column_name=:column_name, source=:source, source_table=:source_table, filters=:filters, groups=:groups, aggregate_function=:aggregate_function where id=:id")
void updateMetaData(@Bind("id") Integer id,@Bind("name") String name, @Bind("column_name") String columnName, @Bind("source") String source, @Bind("source_table") String SourceTable, @Bind("filters") String filters, @Bind("groups") String groups, @Bind("aggregate_function") String aggFunction);
@SqlUpdate("insert into monitor_metadata (name, column_name, source, source_table, filters, groups, aggregate_function) values (:name, :column_name, :source, :source_table, :filters, :groups, :aggregate_function)")
@GetGeneratedKeys
int insertMetaData(@Bind("name") String name, @Bind("column_name") String columnName, @Bind("source") String source, @Bind("source_table") String SourceTable, @Bind("filters") String filters, @Bind("groups") String groups, @Bind("aggregate_function") String aggFunction);
}
\ No newline at end of file
package db;
/**
* Created by feeling on 17/12/22.
* Copy from Databus
*/
import org.skife.jdbi.v2.DBI;
import java.util.concurrent.ConcurrentHashMap;
public class DAOManager {
public static DAOManager INSTANCE = new DAOManager();
private ConcurrentHashMap<Class, Object> internalMap;
public DAOManager() {
this.internalMap = new ConcurrentHashMap<>();
}
public <T> T getDAO(Class T){
if(!this.internalMap.containsKey(T)){
throw new RuntimeException(String.format("not found dao: %s , in DAOManager", T.getName()));
}
T obj = (T)this.internalMap.get(T);
return obj;
}
public void addDAO(Class T, DBI dbi){
if(this.internalMap.containsKey(T)){
return;
}
if(T.isInterface()){
this.internalMap.put(T, dbi.onDemand(T));
}else {
try{
this.internalMap.put(T, T.getConstructor(DBI.class).newInstance(dbi));
}catch (Exception e){
e.printStackTrace();
}
}
}
}
package db;
import org.skife.jdbi.v2.DBI;
import org.skife.jdbi.v2.Handle;
import org.skife.jdbi.v2.tweak.HandleCallback;
import pojo.model.DBMetaColumn;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
/**
* Created by feeling on 18/1/18.
*/
public class HBaseDBInstance {
private DBI dbi;
public HBaseDBInstance(DBI dbi) {
this.dbi = dbi;
}
public List<String> dbTables() {
return dbi.withHandle(new HandleCallback<List<String>>() {
public List<String> withHandle(Handle handle) throws Exception {
List<String> res = new ArrayList<String>();
Connection connection = handle.getConnection();
ResultSet resultSet = connection.getMetaData().getTables(
connection.getCatalog(), null, null, new String[]{"TABLE"}
);
while (resultSet.next()) {
res.add("DATA." + resultSet.getString("TABLE_NAME"));
}
resultSet.close();
return res;
}
});
}
public List<DBMetaColumn> tableColumns(String tableName) {
return dbi.withHandle(new HandleCallback<List<DBMetaColumn>>() {
@Override
public List<DBMetaColumn> withHandle(Handle handle) throws Exception {
List<DBMetaColumn> res = new ArrayList<>();
Connection connection = handle.getConnection();
ResultSet resultSet = connection.getMetaData().getColumns(
connection.getCatalog(), null, tableName.toUpperCase().replace("DATA.", ""), ""
);
while (resultSet.next()) {
res.add(new DBMetaColumn(resultSet.getString(4), resultSet.getInt(5)));
}
resultSet.close();
return res;
}
});
}
}
package db;
import org.skife.jdbi.v2.DBI;
import org.skife.jdbi.v2.Handle;
import org.skife.jdbi.v2.tweak.HandleCallback;
import pojo.model.DBMetaColumn;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.List;
/**
* Created by feeling on 18/1/18.
*/
public class HiveDBInstance {
private DBI dbi;
public HiveDBInstance(DBI dbi) {
this.dbi = dbi;
}
public List<String> dbTables() {
return dbi.withHandle(new HandleCallback<List<String>>() {
public List<String> withHandle(Handle handle) throws Exception {
List<String> res = new ArrayList<String>();
Connection connection = handle.getConnection();
ResultSet resultSet = connection.getMetaData().getTables(
connection.getCatalog(), null, null, new String[]{"TABLE"}
);
while (resultSet.next()) {
res.add(resultSet.getString("TABLE_NAME"));
}
resultSet.close();
return res;
}
});
}
public List<DBMetaColumn> tableColumns(String tableName) {
return dbi.withHandle(new HandleCallback<List<DBMetaColumn>>() {
@Override
public List<DBMetaColumn> withHandle(Handle handle) throws Exception {
List<DBMetaColumn> res = new ArrayList<>();
Connection connection = handle.getConnection();
ResultSet resultSet = connection.prepareStatement("describe "+tableName).executeQuery();
ResultSetMetaData metaData = resultSet.getMetaData();
while (resultSet.next()) {
String columnName = resultSet.getString(metaData.getColumnName(1));
String columnType = resultSet.getString(metaData.getColumnName(2));
if (!columnName.startsWith("#") && !columnName.isEmpty() && !columnName.equals("")) {
res.add(new DBMetaColumn(columnName, columnType));
}
}
resultSet.close();
return res;
}
});
}
}
package db;
import org.apache.xmlbeans.impl.xb.xsdschema.ListDocument;
import org.skife.jdbi.v2.sqlobject.Bind;
import org.skife.jdbi.v2.sqlobject.SqlQuery;
import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
import pojo.mapper.HiveMetaColumnMapper;
import pojo.model.HiveMetaColumn;
import java.util.List;
/**
* Created by feeling on 17/12/28.
*/
public interface HiveMetaColumnDAO {
@SqlQuery("select CD_ID, COLUMN_NAME, TYPE_NAME, INTEGER_IDX from columns_v2 where CD_ID=:cdId order by INTEGER_IDX asc")
@RegisterMapper(HiveMetaColumnMapper.class)
List<HiveMetaColumn> getAllColumns(@Bind("cdId") Integer cdId);
}
package db;
import org.skife.jdbi.v2.sqlobject.Bind;
import org.skife.jdbi.v2.sqlobject.SqlQuery;
import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
import pojo.mapper.HiveMetaTblMapper;
import pojo.model.HiveMetaTbl;
import java.util.List;
/**
* Created by feeling on 17/12/28.
*/
public interface HiveMetaTblDAO {
@SqlQuery("select TBL_ID, tbls.DB_ID as DB_ID, `NAME` AS DB_NAME, tbls.SD_ID, TBL_NAME, TBL_TYPE, sds.CD_ID as CD_ID" +
" from (select DB_ID, `NAME` from dbs where `NAME`=:dbName) db join tbls on db.DB_ID = tbls.DB_ID" +
" join sds on tbls.SD_ID = sds.SD_ID")
@RegisterMapper(HiveMetaTblMapper.class)
List<HiveMetaTbl> getTbls(@Bind("dbName") String dbName);
}
package db;
import org.skife.jdbi.v2.sqlobject.SqlQuery;
import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
import org.skife.jdbi.v2.sqlobject.stringtemplate.ExternalizedSqlViaStringTemplate3;
import org.skife.jdbi.v2.sqlobject.stringtemplate.UseStringTemplate3StatementLocator;
import org.skife.jdbi.v2.unstable.BindIn;
import pojo.mapper.MarsUserMapper;
import pojo.model.MarsUser;
import java.util.List;
/**
* Created by feeling on 17/12/22.
*/
@UseStringTemplate3StatementLocator
public interface MarsUserDAO {
@SqlQuery("select id as user_id, username" +
" from auth_user" +
" where id in (select user_id from api_userextra where login_mars = 1)")
@RegisterMapper(MarsUserMapper.class)
List<MarsUser> getAllUsers();
@SqlQuery("select id as user_id, username" +
" from auth_user" +
" where id in (<user_ids>)")
@RegisterMapper(MarsUserMapper.class)
List<MarsUser> getUsersByUserIds(@BindIn("user_ids") List<Object> userIds);
}
package db;
import org.apache.kylin.jdbc.shaded.com.fasterxml.jackson.databind.deser.std.NumberDeserializers;
import org.apache.kylin.jdbc.shaded.com.google.protobuf.Int32Value;
import org.skife.jdbi.v2.sqlobject.Bind;
import org.skife.jdbi.v2.sqlobject.SqlQuery;
import org.skife.jdbi.v2.sqlobject.SqlUpdate;
import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
import pojo.mapper.TemplateCustomSqlMapper;
import pojo.model.TemplateCustomSql;
/**
* Created by feeling on 17/12/22.
*/
public interface TemplateCustomSqlDAO {
@SqlQuery("select id, template_id, source, sql_text" +
" from monitor_template_sql" +
" where template_id =:id")
@RegisterMapper(TemplateCustomSqlMapper.class)
TemplateCustomSql getTemplateSqlById(@Bind("id")Integer id);
@SqlUpdate("replace into monitor_template_sql (template_id, source, sql_text) values (:template_id, :source, :sql_text)")
void upateTemplateCustomSql(@Bind("template_id") Integer templateId, @Bind("source") String source, @Bind("sql_text") String sqlText);
}
package db;
import org.skife.jdbi.v2.sqlobject.*;
import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
import pojo.mapper.TemplateDataInfoMapper;
import pojo.mapper.TemplateMapper;
import pojo.model.*;
import java.util.Collection;
import java.util.List;
/**
* Created by feeling on 17/12/22.
*/
public interface TemplateDAO {
@SqlQuery("select * from monitor_template")
@RegisterMapper(TemplateMapper.class)
List<Template> getAll();
@SqlQuery("select * from monitor_template where id =:id")
@RegisterMapper(TemplateMapper.class)
Template getTemplateById(@Bind("id") Integer id);
@SqlQuery("select t1.id, t1.template_id,t1.metadata_id, name, source, source_table, filters, groups, aggregate_function, is_delete" +
" from monitor_template_data t1 left join monitor_metadata t2" +
" on t1.metadata_id = t2.id " +
" where t1.template_id =:id and t2.is_delete = 0")
@RegisterMapper(TemplateDataInfoMapper.class)
List<TemplateDataInfo> getTemplateDataInfoById(@Bind("id") Integer id);
@SqlUpdate("insert ignore into monitor_template (name, template_type, report_type, cron_time, created_time) values (:name, :template_type, :report_type, :cron_time, :created_time)")
@GetGeneratedKeys
Integer addTemplate(@Bind("name") String name, @Bind("template_type") Integer templateType, @Bind("report_type") Integer reportType, @Bind("cron_time") String cronTime, @Bind("created_time") String createdTime);
@SqlUpdate("update monitor_template set name =:name, template_type =:template_type, report_type =:report_type, cron_time =:cron_time where id =:id")
void updateTemplate(@Bind("id") Integer id, @Bind("name") String name, @Bind("template_type") Integer templateType, @Bind("report_type") Integer reportType, @Bind("cron_time") String cronTime);
@SqlBatch("insert ignore into monitor_template_data (`template_id`, `metadata_id`) values (:templateId, :metadataId)")
int[] addMetaData(@BindBean Collection<TemplateData> templateDatas);
@SqlUpdate("delete from monitor_template_data where template_id =:id")
void deleteMetaData(@Bind("id") Integer id);
}
package db;
import org.skife.jdbi.v2.sqlobject.Bind;
import org.skife.jdbi.v2.sqlobject.SqlQuery;
import org.skife.jdbi.v2.sqlobject.SqlUpdate;
import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
import org.skife.jdbi.v2.util.StringMapper;
import pojo.mapper.TemplateResultMapper;
import pojo.model.TemplateResult;
import java.util.List;
/**
* Created by feeling on 17/12/22.
*/
public interface TemplateResultDAO {
@SqlQuery("select id, template_id, result_json, created_time from monitor_template_result where created_time=:created_time group by template_id order by id desc")
@RegisterMapper(TemplateResultMapper.class)
List<TemplateResult> getTemplateResultByTime(@Bind("created_time") String createdTime);
@SqlQuery("select id, template_id, result_json, created_time from monitor_template_result where template_id =:id")
@RegisterMapper(TemplateResultMapper.class)
TemplateResult getTemplateResultById(@Bind("id") Integer id);
@SqlUpdate("insert ignore into monitor_template_result (template_id, result_json, created_time) values (:template_id, :result_json, :created_time)")
void addTemplateResult(@Bind("template_id") Integer templateId, @Bind("result_json") String resultJson, @Bind("created_time")String createdTime);
}
package db;
import org.skife.jdbi.v2.sqlobject.*;
import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
import pojo.mapper.MarsUserMapper;
import pojo.mapper.TemplateUserMapper;
import pojo.model.MarsUser;
import pojo.model.TemplateUser;
import java.util.Collection;
import java.util.List;
/**
* Created by feeling on 17/12/22.
*/
public interface TemplateUserDAO {
@SqlQuery("select * from monitor_template_user where template_id =:id")
@RegisterMapper(TemplateUserMapper.class)
List<TemplateUser> getUserByTemplateId(@Bind("id") Integer id);
@SqlBatch("insert ignore into monitor_template_user (`template_id`, `mars_user_id`) values (:templateId, :marsUserId)")
int[] addUser(@BindBean Collection<TemplateUser> templateUsers);
@SqlUpdate("delete from monitor_template_user where template_id=:template_id")
void deleteUsers(@Bind("template_id") Integer templateId);
}
package health;
/**
* Created by feeling on 17/12/7.
*/
import com.codahale.metrics.health.HealthCheck;
public class TemplateHealthCheck extends HealthCheck {
private final String template;
public TemplateHealthCheck(String template) {
this.template = template;
}
@Override
protected Result check() throws Exception {
final String saying = String.format(template, "TEST");
if (!saying.contains("TEST")) {
return Result.unhealthy("template doesn't include a name");
}
return Result.healthy();
}
}
package pojo.mapper;
import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
import pojo.model.CustomMetaData;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* Created by feeling on 17/12/21.
*/
public class CustomMetaDataMapper implements ResultSetMapper<CustomMetaData> {
public static CustomMetaDataMapper FIRST = new CustomMetaDataMapper();
public CustomMetaData map(int i, ResultSet resultSet, StatementContext statementContext) throws SQLException {
return new CustomMetaData(
resultSet.getInt("id"),
resultSet.getString("name"),
resultSet.getString("column_name"),
resultSet.getString("source"),
resultSet.getString("source_table"),
resultSet.getString("filters"),
resultSet.getString("groups"),
resultSet.getString("aggregate_function"),
resultSet.getInt("is_delete")
);
}
}
package pojo.mapper;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
import pojo.model.HiveMetaColumn;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* Created by feeling on 17/12/28.
*/
public class HiveMetaColumnMapper implements ResultSetMapper<HiveMetaColumn> {
public static HiveMetaColumnMapper FIRST = new HiveMetaColumnMapper();
public HiveMetaColumn map(int i, ResultSet resultSet, org.skife.jdbi.v2.StatementContext statementContext) throws SQLException{
return new HiveMetaColumn(
resultSet.getInt("CD_ID"),
// resultSet.getString("COMMENT"),
resultSet.getString("COLUMN_NAME"),
resultSet.getString("TYPE_NAME"),
resultSet.getInt("INTEGER_IDX")
// resultSet.getString("TBL_NAME")
);
}
}
package pojo.mapper;
import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
import pojo.model.HiveMetaTbl;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* Created by feeling on 17/12/28.
*/
public class HiveMetaTblMapper implements ResultSetMapper<HiveMetaTbl> {
public static HiveMetaTblMapper FIRST = new HiveMetaTblMapper();
public HiveMetaTbl map(int i, ResultSet resultSet, StatementContext statementContext) throws SQLException {
return new HiveMetaTbl(
resultSet.getInt("TBL_ID"),
resultSet.getInt("DB_ID"),
resultSet.getString("DB_NAME"),
resultSet.getInt("SD_ID"),
resultSet.getString("TBL_NAME"),
resultSet.getString("TBL_TYPE"),
resultSet.getInt("CD_ID")
);
}
}
\ No newline at end of file
package pojo.mapper;
import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
import pojo.model.MarsUser;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* Created by feeling on 17/12/22.
*/
public class MarsUserMapper implements ResultSetMapper<MarsUser> {
public static MarsUserMapper FIRST = new MarsUserMapper();
public MarsUser map(int i, ResultSet resultSet, StatementContext statementContext) throws SQLException{
return new MarsUser(
resultSet.getInt("user_id"),
resultSet.getString("username")
);
}
}
package pojo.mapper;
import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
import pojo.model.TemplateCustomSql;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* Created by feeling on 17/12/22.
*/
public class TemplateCustomSqlMapper implements ResultSetMapper<TemplateCustomSql>{
public static TemplateCustomSqlMapper FIRST = new TemplateCustomSqlMapper();
public TemplateCustomSql map(int i, ResultSet resultSet, StatementContext statementContext) throws SQLException {
return new TemplateCustomSql(
resultSet.getInt("id"),
resultSet.getInt("template_id"),
resultSet.getString("source"),
resultSet.getString("sql_text")
);
}
}
package pojo.mapper;
import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
import pojo.model.TemplateDataInfo;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* Created by feeling on 17/12/21.
*/
public class TemplateDataInfoMapper implements ResultSetMapper<TemplateDataInfo> {
public static TemplateDataInfoMapper FIRST = new TemplateDataInfoMapper();
public TemplateDataInfo map(int i, ResultSet resultSet, StatementContext statementContext) throws SQLException{
return new TemplateDataInfo(
resultSet.getInt("id"), resultSet.getInt("template_id"),
resultSet.getInt("metadata_id"), resultSet.getString("name"),
resultSet.getString("source"), resultSet.getString("source_table"),
resultSet.getString("filters"),
resultSet.getString("groups"),
resultSet.getString("aggregate_function"),
resultSet.getInt("is_delete")
);
}
}
package pojo.mapper;
/**
* Created by feeling on 17/12/21.
*/
public class TemplateDataMapper {
public static TemplateDataMapper FIRST = new TemplateDataMapper();
}
package pojo.mapper;
/**
* Created by feeling on 17/12/15.
*/
import pojo.model.Template;
import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* Created by feeling on 17/12/15.
*/
public class TemplateMapper implements ResultSetMapper<Template> {
public static final TemplateMapper FIRST = new TemplateMapper();
public Template map(int i, ResultSet resultSet, StatementContext ctx) throws SQLException {
return new Template(resultSet.getInt("id"), resultSet.getString("name"),
resultSet.getInt("template_type"), resultSet.getInt("report_type"),
resultSet.getString("cron_time"));
//resultSet.getNString("result_json"));
}
}
\ No newline at end of file
package pojo.mapper;
import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.sqlobject.customizers.Mapper;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
import pojo.model.TemplateResult;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
/**
* Created by feeling on 17/12/21.
*/
public class TemplateResultMapper implements ResultSetMapper<TemplateResult> {
public static final TemplateResultMapper FIRST = new TemplateResultMapper();
public TemplateResult map(int i, ResultSet resultSet, StatementContext statementContext) throws SQLException{
return new TemplateResult(
resultSet.getInt("id"),
resultSet.getInt("template_id"),
resultSet.getString("result_json"),
resultSet.getString("created_time")
);
}
}
package pojo.mapper;
import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
import pojo.model.TemplateUser;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* Created by feeling on 17/12/22.
*/
public class TemplateUserMapper implements ResultSetMapper<TemplateUser> {
public static TemplateUserMapper FIRST = new TemplateUserMapper();
public TemplateUser map(int i, ResultSet resultSet, StatementContext statementContext) throws SQLException{
return new TemplateUser(
resultSet.getInt("template_id"),
resultSet.getInt("mars_user_id")
);
}
}
package pojo.model;
import org.apache.kylin.jdbc.shaded.com.fasterxml.jackson.core.JsonGenerationException;
import org.apache.kylin.jdbc.shaded.com.fasterxml.jackson.core.type.TypeReference;
import org.apache.kylin.jdbc.shaded.com.fasterxml.jackson.databind.JsonMappingException;
import org.apache.kylin.jdbc.shaded.com.fasterxml.jackson.databind.ObjectMapper;
import org.json.simple.JSONObject;
import utils.BaseModel;
import utils.JsonUtil;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* Created by feeling on 17/12/21.
*/
public class CustomMetaData extends BaseModel{
private Integer id;
private String name;
private String columnName;
private String source;
private String sourceTable;
private String filters;
private String groups;
private String aggregateFunction;
private Integer isDelete;
private List<HashMap<String, Object>> filterLists;
// final private String tableName = "monitor_metadata";
public CustomMetaData(){}
public CustomMetaData(Integer id, String name, String columnName, String source, String sourceTable, String filters, String groups, String aggregateFunction, Integer isDelete) {
this.id = id;
this.name = name;
this.columnName = columnName;
this.source = source;
this.sourceTable = sourceTable;
this.filters = filters;
this.groups = groups;
this.aggregateFunction = aggregateFunction;
this.isDelete = isDelete;
}
public Integer getId() {
return id;
}
public String getColumnName() {
return columnName;
}
public String getName() {
return name;
}
public String getSource() {
return source;
}
public String getSourceTable() {
return sourceTable;
}
public String getFilters() {
return filters;
}
public String getGroups() {
return groups;
}
public String getAggregateFunction() {
return aggregateFunction;
}
public Integer getIsDelete() {
return isDelete;
}
public List<HashMap<String, Object>> getMapFilters() throws IOException{
return JsonUtil.json2MapList(filters);
}
public List getListGroups() throws IOException{
return JsonUtil.json2List(groups);
}
}
package pojo.model;
import java.util.Objects;
/**
* Created by feeling on 18/1/18.
* copy from databus
*/
public class DBMetaColumn {
private String fieldName;
private Object fieldType;
public DBMetaColumn(String fieldName, Object fieldType) {
this.fieldName = fieldName;
this.fieldType = fieldType;
}
public String getFieldName() {
return fieldName;
}
public Object getFieldType() {
return fieldType;
}
@Override
public String toString() {
return "DBMetaColumn{" +
"fieldName='" + fieldName + '\'' +
", fieldType=" + fieldType +
'}';
}
}
package pojo.model;
import utils.BaseModel;
/**
* Created by feeling on 17/12/28.
*/
public class HiveMetaColumn extends BaseModel{
private Integer cdId;
private String comment;
private String columnName;
private String typeName;
private Integer integerIndex;
private String tblsName;
public HiveMetaColumn(){}
public HiveMetaColumn(Integer cdId, String columnName, String typeName, Integer integerIndex){
this.cdId = cdId;
// this.comment = comment;
this.columnName = columnName;
this.typeName = typeName;
this.integerIndex = integerIndex;
}
public Integer getCdId() {
return cdId;
}
public Integer getIntegerIndex() {
return integerIndex;
}
public String getColumnName() {
return columnName;
}
public String getComment() {
return comment;
}
public String getTblsName() {
return tblsName;
}
public String getTypeName() {
return typeName;
}
public void setCdId(Integer cdId) {
this.cdId = cdId;
}
public void setColumnName(String columnName) {
this.columnName = columnName;
}
public void setComment(String comment) {
this.comment = comment;
}
public void setIntegerIndex(Integer integerIndex) {
this.integerIndex = integerIndex;
}
public void setTblsName(String tblsName) {
this.tblsName = tblsName;
}
public void setTypeName(String typeName) {
this.typeName = typeName;
}
}
package pojo.model;
import utils.BaseModel;
/**
* Created by feeling on 17/12/28.
*/
public class HiveMetaTbl extends BaseModel{
private Integer tblId;
private Integer dbId;
private String dbName;
private Integer sdId;
private String tblName;
private String tblType;
private Integer cdId;
public HiveMetaTbl() {
}
public HiveMetaTbl(Integer tblId, Integer dbId, String dbName, Integer sdId, String tblName, String tblType, Integer cdId) {
this.tblId = tblId;
this.dbId =dbId;
this.dbName = dbName;
this.sdId = sdId;
this.tblName = tblName;
this.tblType = tblType;
this.cdId = cdId;
}
public Integer getDbId() {
return dbId;
}
public Integer getSdId() {
return sdId;
}
public String getDbName() {
return dbName;
}
public Integer getTblId() {
return tblId;
}
public String getTblName() {
return tblName;
}
public String getTblType() {
return tblType;
}
public Integer getCdId() {
return cdId;
}
public void setDbId(Integer dbId) {
this.dbId = dbId;
}
public void setDbName(String dbName) {
this.dbName = dbName;
}
public void setSdId(Integer sdId) {
this.sdId = sdId;
}
public void setTblId(Integer tblId) {
this.tblId = tblId;
}
public void setTblName(String tblName) {
this.tblName = tblName;
}
public void setTblType(String tblType) {
this.tblType = tblType;
}
public void setCdId(Integer cdId) {
this.cdId = cdId;
}
}
package pojo.model;
import utils.BaseModel;
/**
* Created by feeling on 17/12/22.
*/
public class MarsUser extends BaseModel{
private Integer userId;
private String username;
public MarsUser(Integer userId, String username) {
this.userId = userId;
this.username = username;
}
public Integer getUserId() {
return userId;
}
public String getUsername() {
return username;
}
}
package pojo.model;
import com.cloudera.org.codehaus.jackson.annotate.JsonCreator;
import com.cloudera.org.codehaus.jackson.map.ObjectMapper;
import utils.BaseModel;
import java.io.IOException;
import java.util.List;
/**
* Created by feeling on 17/12/15.
*/
public class Template extends BaseModel {
private Integer id;
private String name;
private Integer templateType;
private Integer reportType;
private String cronTime;
private List<TemplateUser> templateUsers;
private List<String> templateString;
private List<TemplateData> templateDatas;
private TemplateCustomSql templateCustomSql;
@JsonCreator
public Template() {}
public Template(Integer id, String name, Integer templateType, Integer reportType, String cronTime) {
this.id = id;
this.name = name;
this.templateType = templateType;
this.reportType = reportType;
this.cronTime = cronTime;
// if (resultJson != null && !"".equals(resultJson)) {
// this.resultJson = resultJson;
// }
}
public String getName() {return this.name;}
public Integer getId() {return this.id;}
public Integer getTemplateType() {return this.templateType;}
public Integer getReportType() {return this.reportType;}
public String getCronTime() {return this.cronTime;}
public List<String> getTemplateString() {return this.templateString;}
public List<TemplateUser> getTemplateUsers() {
return templateUsers;
}
public List<TemplateData> getTemplateDatas() {
return templateDatas;
}
public TemplateCustomSql getTemplateCustomSql() {
return templateCustomSql;
}
// public String getResultJson() {return this.resultJson;}
public void setId(Integer id) {
this.id = id;
if (templateDatas != null) {
for(TemplateData templateData: templateDatas) {
templateData.setTemplateId(id);
}
}
if (templateCustomSql != null) {
templateCustomSql.setTemplateId(this.id);
}
if (templateUsers != null) {
for (TemplateUser templateUser: templateUsers) {
templateUser.setTemplateId(this.id);
}
}
}
public void setName(String name) {
this.name = name;
}
public void setTemplateType(Integer templateType) {
this.templateType = templateType;
}
public void setReportType(Integer reportType) {
this.reportType = reportType;
}
public void setCronTime(String cronTime) {
this.cronTime = cronTime;
}
public void setTemplateUsers(List<TemplateUser> templateUsers) {
this.templateUsers = templateUsers;
}
public void setTemplateString(List<String> templateString) {
this.templateString = templateString;
}
public void setTemplateDatas(List<TemplateData> templateDatas) {
this.templateDatas = templateDatas;
}
public void setTemplateCustomSql(TemplateCustomSql templateCustomSql) {
this.templateCustomSql = templateCustomSql;
}
}
package pojo.model;
import utils.BaseModel;
/**
* Created by feeling on 17/12/22.
*/
public class TemplateCustomSql extends BaseModel {
private Integer id;
private Integer templateId;
private String source;
private String sqlText;
public TemplateCustomSql() {}
public TemplateCustomSql(Integer id, Integer templateId, String source, String sqlText) {
this.id = id;
this.templateId = templateId;
this.source = source;
this.sqlText = sqlText;
}
public Integer getId() {
return id;
}
public Integer getTemplateId() {
return templateId;
}
public String getSource() {
return source;
}
public String getSqlText() {
return sqlText;
}
public void setTemplateId(Integer templateId) {
this.templateId = templateId;
}
public void setSource(String source) {
this.source = source;
}
public void setSqlText(String sqlText) {
this.sqlText = sqlText;
}
}
package pojo.model;
import utils.BaseModel;
/**
* Created by feeling on 17/12/21.
*/
public class TemplateData extends BaseModel{
private Integer id;
private Integer templateId;
private Integer metadataId;
public TemplateData() {}
public TemplateData(Integer id, Integer templateId, Integer metadataId) {
this.id = id;
this.templateId = id;
this.metadataId = id;
}
public Integer getId() {
return id;
}
public Integer getTemplateId() {
return templateId;
}
public Integer getMetadataId() {
return metadataId;
}
public void setId(Integer id) {
this.id = id;
}
public void setTemplateId(Integer templateId) {
this.templateId = templateId;
}
public void setMetadataId(Integer metadataId) {
this.metadataId = metadataId;
}
}
package pojo.model;
import utils.BaseModel;
/**
* Created by feeling on 17/12/21.
*/
public class TemplateDataInfo extends BaseModel {
private Integer id;
private Integer templateId;
private Integer metadataId;
private String name;
private String source;
private String sourceTable;
private String filters;
private String groups;
private String aggregateFunction;
private Integer isDelete;
public TemplateDataInfo(
Integer id, Integer templateId, Integer metadataId,
String name, String source, String sourceTable,
String filters, String groups, String aggregateFunction,
Integer isDelete) {
this.id = id;
this.templateId = templateId;
this.metadataId = metadataId;
this.name = name;
this.source = source;
this.sourceTable = sourceTable;
this.filters = filters;
this.groups = groups;
this.aggregateFunction = aggregateFunction;
this.isDelete = isDelete;
}
public Integer getId() {
return id;
}
public Integer getTemplateId() {
return templateId;
}
public Integer getMetadataId() {
return metadataId;
}
public String getName() {
return name;
}
public String getSource() {
return source;
}
public String getSourceTable() {
return sourceTable;
}
public String getFilters() {
return filters;
}
public String getGroups() {
return groups;
}
public String getAggregateFunction() {
return aggregateFunction;
}
public Integer getIsDelete() {
return isDelete;
}
}
package pojo.model;
/**
* Created by feeling on 17/12/21.
*/
public class TemplateResult {
private Integer id;
private Integer templateId;
private String resultJson;
private String createdTime;
public TemplateResult(Integer id, Integer templateId, String resultJson, String createdTime) {
this.id = id;
this.templateId = templateId;
this.resultJson = resultJson;
this.createdTime = createdTime;
}
public Integer getId() {
return id;
}
public Integer getTemplateId() {
return templateId;
}
public String getCreatedTime() {
return createdTime;
}
public String getResultJson() {
return resultJson;
}
public void setCreatedTime(String createdTime) {
this.createdTime = createdTime;
}
}
package pojo.model;
import utils.BaseModel;
/**
* Created by feeling on 17/12/22.
*/
public class TemplateUser extends BaseModel {
private Integer templateId;
private Integer marsUserId;
public TemplateUser() {
}
public TemplateUser(Integer templateId, Integer marsUserId) {
this.templateId = templateId;
this.marsUserId = marsUserId;
}
public Integer getTemplateId() {
return templateId;
}
public Integer getMarsUserId() {
return marsUserId;
}
public void setMarsUserId(Integer marsUserId) {
this.marsUserId = marsUserId;
}
public void setTemplateId(Integer templateId) {
this.templateId = templateId;
}
}
package pojo.response;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.HashMap;
/**
* Created by feeling on 17/12/21.
*/
public class CommonResponse {
@JsonProperty("msg")
private String msg;
@JsonProperty("status")
private Integer status;
@JsonProperty("data")
private HashMap<String, Object> data;
public CommonResponse() {
this.msg = "";
this.status = 0;
}
public CommonResponse(String msg, Integer status) {
this.msg = msg;
this.status = status;
}
public CommonResponse(HashMap data) {
this.msg = "";
this.status = 0;
this.data = data;
}
// public CommonResponse(String data) {
// this.msg = "";
// this.status = 0;
// this.data = data;
// }
}
package pojo.response;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.HashMap;
/**
* Created by feeling on 17/12/21.
*/
public class CustomMataDataResponse {
@JsonProperty("msg")
private String msg;
@JsonProperty("status")
private Integer status;
@JsonProperty("data")
private HashMap data;
public CustomMataDataResponse() {
this.msg = "";
this.status = 0;
}
public CustomMataDataResponse(String msg, Integer status) {
this.msg = msg;
this.status = status;
}
public CustomMataDataResponse(HashMap data) {
this.msg = "";
this.status = 0;
this.data = data;
}
}
package pojo.response;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.w3c.dom.stylesheets.LinkStyle;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by feeling on 17/12/15.
*/
public class Response {
@JsonProperty("msg")
private String msg;
@JsonProperty("status")
private Integer status;
@JsonProperty("data")
private HashMap data;
public Response() {
this.msg = "";
this.status = 0;
}
public Response(String msg, Integer status) {
this.msg = msg;
this.status = status;
}
public Response(HashMap data) {
this.msg = "";
this.status = 0;
this.data = data;
}
}
package pojo.response;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.ArrayList;
import java.util.List;
/**
* Created by feeling on 17/12/19.
*/
public class TemplateResponse {
@JsonProperty("msg")
private String msg;
@JsonProperty("status")
private Integer status;
@JsonProperty("data")
private TemplateData templateData;
public TemplateResponse() {
this.msg = "";
this.status = 0;
this.templateData = new TemplateData();
}
public TemplateResponse(String msg, Integer status) {
this.msg = msg;
this.status = status;
}
public void addItem(Integer id, String name, int templateType, int reportType, String cronTime, String resultJson) {
this.templateData.addItem(id, name, templateType, reportType, cronTime, resultJson);
}
private class TemplateData {
@JsonProperty("templateData")
private List<TemplateItem> data;
public TemplateData() {
this.data = new ArrayList<>();
}
public void addItem(Integer id, String name, int templateType, int reportType, String cronTime, String resultJson) {
this.data.add(new TemplateItem(id, name, templateType, reportType, cronTime, resultJson));
}
private class TemplateItem
{
@JsonProperty("id")
private int id;
@JsonProperty("name")
private String name;
@JsonProperty("template_type")
private int templateType;
@JsonProperty("report_type")
private int reportType;
@JsonProperty("cron_time")
private String cronTime;
@JsonProperty("job_status")
private Integer jobStatus;
public TemplateItem(Integer id, String name, int templateType, int reportType, String cronTime, String resultJson) {
this.id = id;
this.name = name;
this.templateType = templateType;
this.reportType = reportType;
this.cronTime = cronTime;
if (resultJson != null && !"".equals(resultJson)) {
this.jobStatus = 1;
}
else {
this.jobStatus = 0;
}
}
}
}
}
package pojo;
/**
* Created by feeling on 17/12/15.
*/
public class test {
}
package resources;
import com.codahale.metrics.annotation.Timed;
import db.HBaseDBInstance;
import org.skife.jdbi.v2.DBI;
import pojo.model.DBMetaColumn;
import pojo.response.CommonResponse;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
* Created by feeling on 18/1/18.
*/
@Path("/hbase")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class HBaseMetastoreResource {
private HashMap<String, DBI> dbiHashMap;
private HBaseDBInstance hBaseDBInstance;
public HBaseMetastoreResource(HashMap<String, DBI> dbiHashMap) {
this.dbiHashMap = dbiHashMap;
try {
hBaseDBInstance = new HBaseDBInstance(dbiHashMap.get("hbase"));
}
catch (Exception e) {
e.printStackTrace();
}
}
@Path("/tbl_list")
@GET
@Timed
public CommonResponse getTableList() {
List<String> data = hBaseDBInstance.dbTables();
return new CommonResponse(new HashMap(){{put("tblList", data);}});
}
@Path("/column_list")
@GET
@Timed
public CommonResponse getColumnList(@QueryParam("name") String name) {
List<DBMetaColumn> dataList = hBaseDBInstance.tableColumns(name);
List<HashMap<String, String>> res = new ArrayList<>();
for(DBMetaColumn data : dataList) {
res.add(new HashMap(){
{
put("name",data.getFieldName());
put("type",data.getFieldType());
}
});
}
return new CommonResponse(new HashMap(){{put("tblList", res);}});
}
}
package resources;
/**
* Created by feeling on 17/12/7.
*/
import core.Saying;
import com.google.common.base.Optional;
import com.codahale.metrics.annotation.Timed;
import org.skife.jdbi.v2.sqlobject.Bind;
import org.skife.jdbi.v2.sqlobject.SqlQuery;
import pojo.response.CustomMataDataResponse;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.concurrent.atomic.AtomicLong;
@Path("/hello-world")
@Produces(MediaType.APPLICATION_JSON)
public class HelloWorldResource {
private final String template;
private final String defaultName;
private final AtomicLong counter;
public HelloWorldResource(String template, String defaultName) {
this.template = template;
this.defaultName = defaultName;
this.counter = new AtomicLong();
}
@Path("/get")
@GET
@Timed
public Saying sayHello(@QueryParam("name") Optional<String> name) {
final String value = String.format(template, name.or(defaultName));
return new Saying(counter.incrementAndGet(), value);
}
@Path("/test")
@GET
@Timed
public String testApi(@QueryParam("name") Optional<String> name) {
try {
URL url = new URL("https://www.baidu.com");
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));
for (String line; (line = reader.readLine()) != null;) {
System.out.println(line);
}
}
catch (Exception e) {
e.printStackTrace();
}
return "TeSt" + name.toString();
}
@Path("/test_meta")
@GET
@Timed
public CustomMataDataResponse testMeta() {
HashMap hashMap = new HashMap();
ArrayList arrayList = new ArrayList();
ArrayList arrayList1 = new ArrayList();
for (int i=0; i < 5; i++) {
arrayList.add(i);
HashMap item = new HashMap();
item.put("id", i);
item.put("name", "name_"+ i);
arrayList1.add(item);
}
hashMap.put("list", arrayList);
hashMap.put("list1", arrayList1);
System.out.println(hashMap);
return new CustomMataDataResponse(hashMap);
}
}
\ No newline at end of file
package resources;
import com.codahale.metrics.annotation.Timed;
import db.DAOManager;
import db.HiveDBInstance;
import db.HiveMetaColumnDAO;
import db.HiveMetaTblDAO;
import org.skife.jdbi.v2.DBI;
import pojo.model.DBMetaColumn;
import pojo.model.HiveMetaColumn;
import pojo.model.HiveMetaTbl;
import pojo.response.CommonResponse;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
* Created by feeling on 17/12/28.
*/
@Path("/hive")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class HiveMetastoreResource {
private HashMap<String, DBI> dbiHashMap;
private CommonResponse commonResponse;
private HiveDBInstance hiveDBInstance;
public HiveMetastoreResource(HashMap<String, DBI> dbiHashMap) {
this.dbiHashMap = dbiHashMap;
hiveDBInstance = new HiveDBInstance(dbiHashMap.get("hive"));
}
@Path("/tbl_list")
@GET
@Timed
public CommonResponse getAllHiveMetaTbls() {
HiveMetaTblDAO hiveMetaTblsDAO = DAOManager.INSTANCE.getDAO(HiveMetaTblDAO.class);
String dbName = "online";
List<HashMap> data = new ArrayList<HashMap>();
List<HiveMetaTbl> hiveMetaTbls = hiveMetaTblsDAO.getTbls(dbName);
for (HiveMetaTbl hiveMetaTbl: hiveMetaTbls) {
data.add(hiveMetaTbl.getData());
}
return new CommonResponse(new HashMap(){{put("tblList", data);}});
}
@Path("/column_list")
@GET
@Timed
public CommonResponse getTblColumnList(@QueryParam("cd_id") Integer cdId) {
HiveMetaColumnDAO hiveMetaColumnDAO = DAOManager.INSTANCE.getDAO(HiveMetaColumnDAO.class);
List<HashMap> data = new ArrayList<HashMap>();
List<HiveMetaColumn> hiveMetaColumns = hiveMetaColumnDAO.getAllColumns(cdId);
for (HiveMetaColumn hiveMetaColumn: hiveMetaColumns) {
data.add(hiveMetaColumn.getData());
}
return new CommonResponse(new HashMap(){{put("columnList", data);}});
}
@Path("/tbl_list_v1")
@GET
@Timed
public CommonResponse test(){
HiveDBInstance hiveDBInstance = new HiveDBInstance(dbiHashMap.get("hive"));
List<String> data= hiveDBInstance.dbTables();
return new CommonResponse(new HashMap(){{put("tblList", data);}});
}
@Path("/column_list_v1")
@GET
@Timed
public CommonResponse getColumnList(@QueryParam("name") String name) {
List<DBMetaColumn> dataList = hiveDBInstance.tableColumns(name);
List<HashMap<String, String>> res = new ArrayList<>();
for(DBMetaColumn data : dataList) {
res.add(new HashMap(){
{
put("name",data.getFieldName());
put("type",data.getFieldType());
}
});
}
return new CommonResponse(new HashMap(){{put("columnList", res);}});
}
}
package resources;
import com.cloudera.org.codehaus.jackson.map.ObjectMapper;
import com.codahale.metrics.annotation.Timed;
import db.*;
import javassist.expr.Cast;
import org.joda.time.DateTime;
import org.skife.jdbi.v2.DBI;
import org.skife.jdbi.v2.Handle;
import org.skife.jdbi.v2.tweak.HandleCallback;
import org.skife.jdbi.v2.util.StringMapper;
import javax.swing.text.html.parser.Entity;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import java.io.IOException;
import java.util.*;
import pojo.mapper.*;
import pojo.model.*;
import pojo.response.CommonResponse;
import pojo.response.TemplateResponse;
/**
* Created by feeling on 17/12/15.
*/
@Path("/template")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class TemplateResource {
private HashMap<String, DBI> dbiHashMap;
private CommonResponse commonResponse;
public TemplateResource(HashMap<String, DBI> dbiHashMap) {
this.dbiHashMap = dbiHashMap;
}
@Path("/list")
@GET
@Timed
public TemplateResponse getTemplateList() {
TemplateDAO templateDAO = DAOManager.INSTANCE.getDAO(TemplateDAO.class);
List<Template> ids = templateDAO.getAll();
TemplateResultDAO templateResultDAO = DAOManager.INSTANCE.getDAO(TemplateResultDAO.class);
List<TemplateResult> templateResults = templateResultDAO.getTemplateResultByTime(DateTime.now().toString("yyyy-MM-dd"));
HashMap<Integer, TemplateResult> resultMap = new HashMap<Integer, TemplateResult>();
for(TemplateResult templateResult: templateResults) {
resultMap.put(templateResult.getTemplateId(), templateResult);
}
TemplateResponse res = new TemplateResponse();
for(Template map: ids) {
TemplateResult result = resultMap.get(map.getId());
String resultJson = "";
if(result != null) {
resultJson = result.getResultJson();
}
res.addItem(
map.getId(), map.getName(), map.getTemplateType(), map.getReportType(), map.getCronTime(), resultJson
);
}
return res;
}
@Path("/info")
@GET
@Timed
public CommonResponse getTemplateInfo(@QueryParam("id") Integer id) throws Exception {
if (id <= 0) {
throw new Exception("bad id");
}
TemplateDAO templateDAO = DAOManager.INSTANCE.getDAO(TemplateDAO.class);
Template template = templateDAO.getTemplateById(id);
HashMap<String, Object> data = template.getData();
TemplateUserDAO templateUserDAO = DAOManager.INSTANCE.getDAO(TemplateUserDAO.class);
List<TemplateUser> templateUsers = templateUserDAO.getUserByTemplateId(id);
List<HashMap<String, Object>> userList = new ArrayList<>();
List<Object> users = new ArrayList<>();
for(TemplateUser templateUser: templateUsers) {
HashMap<String, Object> templateData = templateUser.getData();
users.add(templateData.getOrDefault("mars_user_id", 0));
}
for (MarsUser marsUser: this.getTemplateUsers(users)) {
userList.add(marsUser.getData());
}
data.put("user_list", userList);
if (data.get("template_type").toString().equals('0')) {
List<HashMap<String, Object>> dataList = new ArrayList<>();
for(TemplateDataInfo templateDataInfo: templateDAO.getTemplateDataInfoById(id)) {
dataList.add(templateDataInfo.getData());
}
data.put("metadata_list", dataList);
}
else {
TemplateCustomSqlDAO templateCustomSqlDAO = DAOManager.INSTANCE.getDAO(TemplateCustomSqlDAO.class);
TemplateCustomSql templateCustomSql = templateCustomSqlDAO.getTemplateSqlById(id);
if (templateCustomSql != null) {
data.put("template_sql", templateCustomSql.getData());
}
else {
data.put("template_sql", new HashMap());
}
}
return new CommonResponse(data);
}
private List<MarsUser> getAllMarsUsers() {
MarsUserDAO marsUserDAO = DAOManager.INSTANCE.getDAO(MarsUserDAO.class);
List<MarsUser> marsUsers = marsUserDAO.getAllUsers();
return marsUsers;
}
private List<MarsUser> getTemplateUsers(List<Object> userList) {
System.out.println(userList);
MarsUserDAO marsUserDAO = DAOManager.INSTANCE.getDAO(MarsUserDAO.class);
List<MarsUser> marsUsers = marsUserDAO.getUsersByUserIds(userList);
return marsUsers;
}
@Path("/metadata_list")
@GET
@Timed
public CommonResponse getMetaDataList(){
CustomMetaDataDAO customMetaDataDAO = DAOManager.INSTANCE.getDAO(CustomMetaDataDAO.class);
List<CustomMetaData> customMetaDatas = customMetaDataDAO.getAll(0);
List<HashMap<String, Object>> listData = new ArrayList<HashMap<String, Object>>();
for(CustomMetaData customMetaData: customMetaDatas) {
listData.add(customMetaData.getData());
}
HashMap<String, Object> data = new HashMap<String, Object>();
data.put("metadata_list", listData);
return new CommonResponse(data);
}
@Path("/metadata_info")
@GET
@Timed
public CommonResponse getMetaDataInfo(@QueryParam("id") Integer id) {
CustomMetaDataDAO customMetaDataDAO = DAOManager.INSTANCE.getDAO(CustomMetaDataDAO.class);
CustomMetaData customMetaData = customMetaDataDAO.getDataById(id, 0);
return new CommonResponse(customMetaData.getData());
}
@Path("/edit_template")
@POST
@Timed
public CommonResponse editTemplate(Template template) throws IOException {
System.out.println(template.getId() + "\t" + template.getName() + "\t" + template.getReportType() + "\t" + template.getTemplateType() + "\t" + template.getCronTime());
TemplateDAO templateDAO = DAOManager.INSTANCE.getDAO(TemplateDAO.class);
Integer templateId;
if (template.getId() == null) {
templateId = templateDAO.addTemplate(template.getName(), template.getTemplateType(), template.getReportType(), template.getCronTime(), DateTime.now().toString("yyyy-MM-dd HH:mm:ss"));
template.setId(templateId);
}
else {
templateId = template.getId();
templateDAO.updateTemplate(template.getId(), template.getName(), template.getTemplateType(), template.getReportType(), template.getCronTime());
}
if (template.getTemplateUsers() != null) {
TemplateUserDAO templateUserDAO = DAOManager.INSTANCE.getDAO(TemplateUserDAO.class);
templateUserDAO.deleteUsers(templateId);
templateUserDAO.addUser(template.getTemplateUsers());
}
if (template.getTemplateDatas() != null) {
templateDAO.deleteMetaData(templateId);
templateDAO.addMetaData(template.getTemplateDatas());
}
if (template.getTemplateCustomSql() != null) {
TemplateCustomSqlDAO templateCustomSqlDAO = DAOManager.INSTANCE.getDAO(TemplateCustomSqlDAO.class);
templateCustomSqlDAO.upateTemplateCustomSql(templateId, template.getTemplateCustomSql().getSource(), template.getTemplateCustomSql().getSqlText());
}
return new CommonResponse();
}
@Path("/edit_metadata")
@POST
@Timed
public CommonResponse editMetadata(CustomMetaData customMetaData) {
CustomMetaDataDAO customMetaDataDAO = DAOManager.INSTANCE.getDAO(CustomMetaDataDAO.class);
if (customMetaData.getId() != null) {
customMetaDataDAO.updateMetaData(customMetaData.getId(), customMetaData.getName(), customMetaData.getColumnName(), customMetaData.getSource(), customMetaData.getSourceTable(), customMetaData.getFilters(), customMetaData.getGroups(), customMetaData.getAggregateFunction());
}
else {
customMetaDataDAO.insertMetaData(customMetaData.getName(), customMetaData.getColumnName(), customMetaData.getSource(), customMetaData.getSourceTable(), customMetaData.getFilters(), customMetaData.getGroups(), customMetaData.getAggregateFunction());
}
return new CommonResponse();
}
}
\ No newline at end of file
package tasks;
/**
* Created by feeling on 17/12/11.
*/
import com.google.common.collect.ImmutableMultimap;
import io.dropwizard.servlets.tasks.Task;
import java.io.PrintWriter;
public class EchoTask extends Task {
public EchoTask() {
super("echo");
}
public void execute(ImmutableMultimap<String, String> parameters, PrintWriter output) throws Exception {
output.print(this.getName()+" task");
output.flush();
}
}
package utils;
import com.cloudera.org.codehaus.jackson.map.ObjectMapper;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.HashMap;
/**
* Created by feeling on 17/12/21.
*/
public class BaseModel {
public HashMap<String, Object> getData() {
HashMap<String, Object> data = new HashMap<String, Object>();
Field[] fields = this.getObjFields();
try {
for (int i = 0; i < fields.length; i++) {
Field f = fields[i];
f.setAccessible(true);
data.put(f.getName(), f.get(this));
}
}
catch (IllegalAccessException e) {
e.printStackTrace();
}
return data;
}
private Field[] getObjFields(){
return this.getClass().getDeclaredFields();
}
private String transformString(String str) {
if (str.length() <= 0) {
return str;
}
String transformString = "";
for (int i=0 ; i < str.length(); i++) {
Character tmpChar = str.charAt(i);
if (Character.isUpperCase(tmpChar)) {
transformString += "_"+ tmpChar.toString().toLowerCase();
}
else {
transformString += tmpChar.toString().toLowerCase();
}
}
return transformString;
}
}
package utils;
/**
* Created by feeling on 17/12/21.
*/
import org.skife.jdbi.v2.DBI;
import java.util.List;
public interface DBInstance {
public List<String> dbTables();
public DBI dbi();
public boolean checkExpression(String expression);
}
package utils;
/**
* Created by feeling on 17/12/21.
*/
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
public class DBInstanceManager {
final public static DBInstanceManager INSTANCE = new DBInstanceManager();
private ConcurrentHashMap<String, DBInstance> dbInstances;
public DBInstanceManager() {
this.dbInstances = new ConcurrentHashMap<>();
}
public void registerDBInstance(String dbName, DBInstance instance){
this.dbInstances.put(dbName, instance);
}
public DBInstance getInstance(String dbName){
return this.dbInstances.get(dbName);
}
public ConcurrentHashMap<String, DBInstance> getDbInstances() {
return dbInstances;
}
}
package utils;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
* Created by feeling on 17/12/26.
*/
public class JsonUtil {
public static ObjectMapper mapper = new ObjectMapper();
public static List json2MapList(String jsonStr) throws IOException{
List<HashMap<String, Object>> dataLists = new ArrayList<HashMap<String, Object>>();
if (jsonStr.length() > 0) {
dataLists = mapper.readValue(jsonStr, new TypeReference<List<HashMap<String, Object>>>(){});
}
return dataLists;
}
public static List json2List(String jsonStr) throws IOException {
List dataLists = new ArrayList<>();
if (jsonStr.length() > 0) {
dataLists = mapper.readValue(jsonStr, new TypeReference<List>() {
});
}
return dataLists;
}
public static HashMap<String, Object> json2Map(String jsonStr) throws IOException {
HashMap<String, Object> dataLists = new HashMap<String, Object>();
if (jsonStr.length() > 0) {
dataLists = mapper.readValue(jsonStr, new TypeReference<HashMap<String, Object>>() {
});
}
return dataLists;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<artifactId>data-monitor</artifactId>
<groupId>com.gmei.data</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>taskServer</artifactId>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer />
<transformer>
<mainClass>QuartzTest</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
<configuration>
<createDependencyReducedPom>true</createDependencyReducedPom>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-it</artifactId>
<version>1.2.0-cdh5.9.0</version>
<type>test-jar</type>
<scope>compile</scope>
<exclusions>
<exclusion>
<artifactId>jruby-complete</artifactId>
<groupId>org.jruby</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-server</artifactId>
<version>1.2.0-cdh5.9.0</version>
<type>test-jar</type>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>data-monitor</artifactId>
<groupId>com.gmei.data</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>taskServer</artifactId>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<configuration>
<createDependencyReducedPom>true</createDependencyReducedPom>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>QuartzTest</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>com.gmei.data</groupId>
<artifactId>server</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.util.Date;
/**
* Created by feeling on 17/12/14.
*/
public class HelloJob implements Job {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
System.out.println("Generating report - "
+ jobExecutionContext.getJobDetail().getDescription() + ", type ="
+ jobExecutionContext.getJobDetail().getJobDataMap().get("type"));
System.out.println(new Date().toString());
}
}
/**
* Created by feeling on 17/12/14.
*/
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;
import static org.quartz.JobBuilder.*;
import static org.quartz.TriggerBuilder.*;
import static org.quartz.SimpleScheduleBuilder.*;
public class QuartzTest {
public static void main(String[] args) {
try {
// Grab the Scheduler instance from the Factory
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
// and start it off
scheduler.start();
// define the job and tie it to our HelloJob class
JobDetail job = newJob(HelloJob.class)
.withIdentity("job1", "group1")
.build();
// Trigger the job to run now, and then repeat every 40 seconds
Trigger trigger = newTrigger()
.withIdentity("trigger1", "group1")
.startNow()
.withSchedule(simpleSchedule()
.withIntervalInSeconds(40)
.repeatForever())
.build();
scheduler.shutdown();
} catch (SchedulerException se) {
se.printStackTrace();
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment