Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 56 additions & 26 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -1,32 +1,62 @@
<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">
<modelVersion>4.0.0</modelVersion>
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>org.wzy</groupId>
<artifactId>sqltemplate</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<groupId>org.wzy</groupId>
<artifactId>sqltemplate</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>sqltemplate</name>
<url>http://maven.apache.org</url>
<name>sqltemplate</name>
<url>http://maven.apache.org</url>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>ognl</groupId>
<artifactId>ognl</artifactId>
<version>3.0.8</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.0.7</version>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>utf-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>ognl</groupId>
<artifactId>ognl</artifactId>
<version>3.0.8</version>
</dependency>

</dependencies>

</project>
147 changes: 73 additions & 74 deletions src/main/java/org/wzy/sqltemplate/Context.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,110 +9,109 @@
import ognl.OgnlException;
import ognl.OgnlRuntime;
import ognl.PropertyAccessor;
import org.wzy.sqltemplate.utils.CommonUtil;

/**
*
* @author Wen
*
*/
public class Context {


static {
OgnlRuntime.setPropertyAccessor(HashMap.class, new ContextAccessor());
}
static {
OgnlRuntime.setPropertyAccessor(HashMap.class, new ContextAccessor());
}

public static final String BINDING_DATA = "_data";
public static final String BINDING_DATA = "_data";

private Configuration cfg;
private Configuration cfg;

private Map<String, Object> binding;
private Map<String, Object> binding;

private StringBuilder sql = new StringBuilder();
private StringBuilder sql = new StringBuilder();

private List<Object> parameter;
private List<Object> parameter;

private int uniqueNumber = 0;
private int uniqueNumber = 0;

public Context(Configuration cfg, Object data) {
this.cfg = cfg;
binding = new HashMap<String, Object>();
parameter = new ArrayList<Object>();
binding.put(BINDING_DATA, data);
}
public Context(Configuration cfg, Object data) {
this.cfg = cfg;
binding = new HashMap<String, Object>();
binding.put("util", new CommonUtil());
parameter = new ArrayList<Object>();
binding.put(BINDING_DATA, data);
}

public void bind(String key, Object value) {
binding.put(key, value);
}
public void bind(String key, Object value) {
binding.put(key, value);
}

public void appendSql(String sqlFragement) {
sql.append(sqlFragement).append(" ");
}
public void appendSql(String sqlFragement) {
sql.append(sqlFragement).append(" ");
}

public Map<String, Object> getBinding() {
return this.binding;
}
public Map<String, Object> getBinding() {
return this.binding;
}

public List<Object> getParameter() {
return this.parameter;
}
public List<Object> getParameter() {
return this.parameter;
}

public void addParameter(Object parameter) {
this.parameter.add(parameter);
}
public void addParameter(Object parameter) {
this.parameter.add(parameter);
}

public String getSql() {
return sql.toString();
}
public String getSql() {
return sql.toString();
}

public void setSql(String sql) {
this.sql = new StringBuilder(sql);
}
public void setSql(String sql) {
this.sql = new StringBuilder(sql);
}

public int getUniqueNumber() {
return ++uniqueNumber;
}
public int getUniqueNumber() {
return ++uniqueNumber;
}

public Configuration getConfiguration() {
return this.cfg;
}
public Configuration getConfiguration() {
return this.cfg;
}

static class ContextAccessor implements PropertyAccessor {
static class ContextAccessor implements PropertyAccessor {

public Object getProperty(Map context, Object target, Object name)
throws OgnlException {
Map map = (Map) target;
public Object getProperty(Map context, Object target, Object name)
throws OgnlException {
Map map = (Map)target;

Object result = map.get(name);
if (result != null) {
return result;
}
Object result = map.get(name);
if (result != null) {
return result;
}

Object parameterObject = map.get(BINDING_DATA);
if (parameterObject instanceof Map) {
return ((Map) parameterObject).get(name);
}
Object parameterObject = map.get(BINDING_DATA);
if (parameterObject instanceof Map) {
return ((Map)parameterObject).get(name);
}

return null;
}
return null;
}

public void setProperty(Map context, Object target, Object name,
Object value) throws OgnlException {
Map map = (Map) target;
map.put(name, value);
}
public void setProperty(Map context, Object target, Object name,
Object value) throws OgnlException {
Map map = (Map)target;
map.put(name, value);
}

public String getSourceAccessor(OgnlContext arg0, Object arg1,
Object arg2) {
// TODO Auto-generated method stub
return null;
}
public String getSourceAccessor(OgnlContext arg0, Object arg1,
Object arg2) {
// TODO Auto-generated method stub
return null;
}

public String getSourceSetter(OgnlContext arg0, Object arg1, Object arg2) {
// TODO Auto-generated method stub
return null;
}
public String getSourceSetter(OgnlContext arg0, Object arg1, Object arg2) {
// TODO Auto-generated method stub
return null;
}

}
}

}
2 changes: 1 addition & 1 deletion src/main/java/org/wzy/sqltemplate/SqlTemplate.java
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ private Document buildXml(String templateContent)

public InputSource resolveEntity(String publicId,
String systemId) throws SAXException, IOException {
return new InputSource(SqlTemplate.class.getResourceAsStream("script-1.0.dtd"));
return new InputSource(SqlTemplate.class.getResourceAsStream("/script-1.0.dtd"));
}
});
builder.setErrorHandler(new ErrorHandler() {
Expand Down
102 changes: 102 additions & 0 deletions src/main/java/org/wzy/sqltemplate/utils/CommonUtil.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
package org.wzy.sqltemplate.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;

/**
* 便于模板中日期的一些操作
*
* @author xingchuan.qxc
* @since 2020/03/23
*/
public class CommonUtil {

/**
* 通过一个日期的入参,得出N天后的日期
*
* @param date 格式yyyyMMdd
* @param days 加多少天
* @return 计算之后的日期,格式yyyyMMdd
*/
public String addDays(String date, int days) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
try {
Date d = simpleDateFormat.parse(date);
Calendar calendar = Calendar.getInstance();
calendar.setTime(d);
calendar.add(Calendar.DATE, days);
return simpleDateFormat.format(calendar.getTime());
} catch (ParseException e) {
throw new RuntimeException(e);
}
}

/**
* 给一个指定日期,返回这个日期对应的星期的星期一是哪天
*
* @param date 给定的日期
* @return 指定日期所在星期的星期一
*/
public String getWeekMonday(String date) {
DateTime d = DateUtil.parse(date, "yyyyMMdd");
Calendar calendar = DateUtil.beginOfWeek(d.toCalendar(), true);
return DateUtil.format(calendar.getTime(), "yyyyMMdd");
}

/**
* 给一个指定日期,返回这个日期对应的星期的星期五是哪天
*
* @param date 给定的日期
* @return 指定日期所在星期的星期五
*/
public String getWeekFriday(String date) {
DateTime d = DateUtil.parse(date, "yyyyMMdd");
Calendar calendar = DateUtil.beginOfWeek(d.toCalendar(), true);
calendar.add(Calendar.DATE, 4);
return DateUtil.format(calendar.getTime(), "yyyyMMdd");
}

/**
* 给一个指定日期,返回这个日期对应的上一个星期的星期一是哪天
*
* @param date 给定的日期
* @return 指定日期的上一个星期的星期一
*/
public String getLastWeekMonday(String date) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
try {
Date d = simpleDateFormat.parse(date);
DateTime dateTime = DateUtil.offsetWeek(d, -1);
Calendar calendar = DateUtil.beginOfWeek(dateTime.toCalendar(), true);
Date monday = calendar.getTime();
return simpleDateFormat.format(monday);
} catch (ParseException e) {
throw new RuntimeException(e);
}
}

/**
* 给一个指定日期,返回这个日期对应的上一个星期的星期五是哪天
*
* @param date 给定的日期
* @return 指定日期的上一个星期的星期五
*/
public String getLastWeekFriday(String date) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
try {
Date d = simpleDateFormat.parse(date);
DateTime dateTime = DateUtil.offsetWeek(d, -1);
Calendar calendar = DateUtil.beginOfWeek(dateTime.toCalendar(), true);
calendar.add(Calendar.DATE, 4);
Date friday = calendar.getTime();
return simpleDateFormat.format(friday);
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
}
Loading