Commit f13bce6f authored by reedmi's avatar reedmi

删除多余的project相关

parent 4365dd18
...@@ -5,3 +5,4 @@ ...@@ -5,3 +5,4 @@
.settings .settings
/filters/dev /filters/dev
upload/ upload/
.springBeans
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <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"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>com.originspark.drp</groupId> <groupId>com.originspark.drp</groupId>
<artifactId>drp</artifactId> <artifactId>drp</artifactId>
<packaging>war</packaging> <packaging>war</packaging>
<version>1.0-SNAPSHOT</version> <version>1.0-SNAPSHOT</version>
<name>drp Maven Webapp</name> <name>drp Maven Webapp</name>
<url>http://maven.apache.org</url> <url>http://maven.apache.org</url>
<properties> <properties>
<junit.version>4.11</junit.version> <junit.version>4.11</junit.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jdk.version>1.7</jdk.version> <jdk.version>1.7</jdk.version>
<hibernate.version>4.2.0.Final</hibernate.version> <hibernate.version>4.2.0.Final</hibernate.version>
<mysql.connector.version>5.1.21</mysql.connector.version> <mysql.connector.version>5.1.21</mysql.connector.version>
<spring.version>3.2.2.RELEASE</spring.version> <spring.version>3.2.2.RELEASE</spring.version>
</properties> </properties>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>javax.servlet</groupId> <groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId> <artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version> <version>3.0.1</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>javax.servlet.jsp</groupId> <groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId> <artifactId>jsp-api</artifactId>
<version>2.1</version> <version>2.1</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>javax.servlet</groupId> <groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId> <artifactId>jstl</artifactId>
<version>1.2</version> <version>1.2</version>
</dependency> </dependency>
<!-- DB related dependencies --> <!-- DB related dependencies -->
<dependency> <dependency>
<groupId>org.hibernate</groupId> <groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId> <artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version> <version>${hibernate.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.hibernate</groupId> <groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId> <artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate.version}</version> <version>${hibernate.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.hibernate</groupId> <groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId> <artifactId>hibernate-ehcache</artifactId>
<version>${hibernate.version}</version> <version>${hibernate.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>mysql</groupId> <groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId> <artifactId>mysql-connector-java</artifactId>
<version>${mysql.connector.version}</version> <version>${mysql.connector.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>commons-dbcp</groupId> <groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId> <artifactId>commons-dbcp</artifactId>
<version>1.4</version> <version>1.4</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>javassist</groupId> <groupId>javassist</groupId>
<artifactId>javassist</artifactId> <artifactId>javassist</artifactId>
<version>3.12.1.GA</version> <version>3.12.1.GA</version>
</dependency> </dependency>
<!-- SPRING --> <!-- SPRING -->
<dependency> <dependency>
<groupId>org.springframework</groupId> <groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId> <artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version> <version>${spring.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework</groupId> <groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId> <artifactId>spring-tx</artifactId>
<version>${spring.version}</version> <version>${spring.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework</groupId> <groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId> <artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version> <version>${spring.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework</groupId> <groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId> <artifactId>spring-orm</artifactId>
<version>${spring.version}</version> <version>${spring.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>commons-io</groupId> <groupId>commons-io</groupId>
<artifactId>commons-io</artifactId> <artifactId>commons-io</artifactId>
<version>2.4</version> <version>2.4</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.commons</groupId> <groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId> <artifactId>commons-lang3</artifactId>
<version>3.3.2</version> <version>3.3.2</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>commons-fileupload</groupId> <groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId> <artifactId>commons-fileupload</artifactId>
<version>1.3.1</version> <version>1.3.1</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>log4j</groupId> <groupId>log4j</groupId>
<artifactId>log4j</artifactId> <artifactId>log4j</artifactId>
<version>1.2.17</version> <version>1.2.17</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.poi</groupId> <groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId> <artifactId>poi</artifactId>
<version>3.11</version> <version>3.11</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.poi</groupId> <groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId> <artifactId>poi-ooxml</artifactId>
<version>3.11</version> <version>3.11</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.fasterxml.jackson.core</groupId> <groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId> <artifactId>jackson-core</artifactId>
<version>2.5.1</version> <version>2.5.1</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.fasterxml.jackson.core</groupId> <groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId> <artifactId>jackson-databind</artifactId>
<version>2.5.1</version> <version>2.5.1</version>
</dependency> </dependency>
</dependencies> </dependencies>
<profiles> <profiles>
<profile> <profile>
<id>dev</id> <id>dev</id>
<activation> <activation>
<activeByDefault>true</activeByDefault> <activeByDefault>true</activeByDefault>
</activation> </activation>
<properties> <properties>
<filters.env>dev</filters.env> <filters.env>dev</filters.env>
</properties> </properties>
</profile> </profile>
<profile> <profile>
<id>prod</id> <id>prod</id>
<properties> <properties>
<filters.env>prod</filters.env> <filters.env>prod</filters.env>
</properties> </properties>
</profile> </profile>
</profiles> </profiles>
<build> <build>
<finalName>drp</finalName> <finalName>drp</finalName>
<sourceDirectory>src/main/java</sourceDirectory> <sourceDirectory>src/main/java</sourceDirectory>
<testSourceDirectory>src/test/java</testSourceDirectory> <testSourceDirectory>src/test/java</testSourceDirectory>
<resources> <resources>
<resource> <resource>
<directory>${project.basedir}/src/main/resources</directory> <directory>${project.basedir}/src/main/resources</directory>
<filtering>true</filtering> <filtering>true</filtering>
</resource> </resource>
</resources> </resources>
<filters> <filters>
<filter>${basedir}/filters/${filters.env}/jdbc.properties</filter> <filter>${basedir}/filters/${filters.env}/jdbc.properties</filter>
</filters> </filters>
<plugins> <plugins>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version> <version>2.5.1</version>
<configuration> <configuration>
<encoding>UTF-8</encoding> <encoding>UTF-8</encoding>
<source>${jdk.version}</source> <source>${jdk.version}</source>
<target>${jdk.version}</target> <target>${jdk.version}</target>
</configuration> </configuration>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.codehaus.plexus</groupId> <groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-compiler-javac</artifactId> <artifactId>plexus-compiler-javac</artifactId>
<version>1.8.1</version> <version>1.8.1</version>
</dependency> </dependency>
</dependencies> </dependencies>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.apache.tomcat.maven</groupId> <groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId> <artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version> <version>2.1</version>
<configuration> <configuration>
<port>8080</port> <port>8080</port>
<path>/drp</path> <path>/drp</path>
<uriEncoding>UTF-8</uriEncoding> <uriEncoding>UTF-8</uriEncoding>
<finalName>drp</finalName> <finalName>drp</finalName>
<server>tomcat7</server> <server>tomcat7</server>
</configuration> </configuration>
</plugin> </plugin>
</plugins> </plugins>
</build> </build>
</project> </project>
...@@ -78,7 +78,7 @@ public class BaseController extends HandlerInterceptorAdapter { ...@@ -78,7 +78,7 @@ public class BaseController extends HandlerInterceptorAdapter {
} }
public User getCurrentUser() { public User getCurrentUser() {
return (User)session().getAttribute("user"); return (User) session().getAttribute("user");
} }
// 一般用于create、update、delete的返回值 // 一般用于create、update、delete的返回值
......
...@@ -8,12 +8,12 @@ import org.springframework.web.bind.annotation.RequestMethod; ...@@ -8,12 +8,12 @@ import org.springframework.web.bind.annotation.RequestMethod;
public class MainController { public class MainController {
@RequestMapping("index") @RequestMapping("index")
public String index(){ public String index() {
return "index"; return "index";
} }
@RequestMapping(value="main",method=RequestMethod.GET) @RequestMapping(value = "main", method = RequestMethod.GET)
public String main(){ public String main() {
return "main"; return "main";
} }
} }
...@@ -15,9 +15,9 @@ import com.originspark.drp.util.json.PasswordJson; ...@@ -15,9 +15,9 @@ import com.originspark.drp.util.json.PasswordJson;
@RequestMapping("profile") @RequestMapping("profile")
public class ProfileController extends BaseController { public class ProfileController extends BaseController {
@RequestMapping(value="/password/update",method = RequestMethod.GET) @RequestMapping(value = "/password/update", method = RequestMethod.GET)
@ResponseBody @ResponseBody
public String updatePassword(@RequestParam String data){ public String updatePassword(@RequestParam String data) {
System.out.println(request().getSession()); System.out.println(request().getSession());
...@@ -25,7 +25,7 @@ public class ProfileController extends BaseController { ...@@ -25,7 +25,7 @@ public class ProfileController extends BaseController {
try { try {
PasswordJson json = mapper.readValue(data, PasswordJson.class); PasswordJson json = mapper.readValue(data, PasswordJson.class);
if(!json.getNewpwd().equals(json.getNewpwdagain())){ if (!json.getNewpwd().equals(json.getNewpwdagain())) {
return failure("修改失败,密码两次输入不一致"); return failure("修改失败,密码两次输入不一致");
} }
...@@ -33,7 +33,7 @@ public class ProfileController extends BaseController { ...@@ -33,7 +33,7 @@ public class ProfileController extends BaseController {
Blowfish bf = new Blowfish(); Blowfish bf = new Blowfish();
String pwd = bf.decryptString(user.getPassword()); String pwd = bf.decryptString(user.getPassword());
if(!json.getPwd().equals(pwd)){ if (!json.getPwd().equals(pwd)) {
return failure("修改失败,请输入正确的原始密码"); return failure("修改失败,请输入正确的原始密码");
} }
...@@ -43,7 +43,7 @@ public class ProfileController extends BaseController { ...@@ -43,7 +43,7 @@ public class ProfileController extends BaseController {
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return failure("系统出现异常,修改失败"); return failure("系统出现异常,修改失败");
} }
return ok("密码修改成功"); return ok("密码修改成功");
} }
......
...@@ -26,14 +26,14 @@ import com.originspark.drp.util.json.JsonUtils; ...@@ -26,14 +26,14 @@ import com.originspark.drp.util.json.JsonUtils;
@RequestMapping("users") @RequestMapping("users")
public class UserController extends BaseController { public class UserController extends BaseController {
@RequestMapping(value="/{type}", method = RequestMethod.POST) @RequestMapping(value = "/{type}", method = RequestMethod.POST)
@ResponseBody @ResponseBody
public String create(@PathVariable String type, @RequestBody User user) { public String create(@PathVariable String type, @RequestBody User user) {
if(type == null || "".equals(type)) { if (type == null || "".equals(type)) {
return ok("参数错误"); return ok("参数错误");
} }
User currentUser = getCurrentUser(); User currentUser = getCurrentUser();
if(currentUser == null || !UserType.MANAGER.equals(currentUser.getType())) { if (currentUser == null || !UserType.MANAGER.equals(currentUser.getType())) {
return ok("权限不足"); return ok("权限不足");
} }
user.setType(UserType.valueOf(type.toUpperCase())); user.setType(UserType.valueOf(type.toUpperCase()));
...@@ -45,11 +45,11 @@ public class UserController extends BaseController { ...@@ -45,11 +45,11 @@ public class UserController extends BaseController {
@RequestMapping(value = "/{type}/{id}", method = RequestMethod.DELETE) @RequestMapping(value = "/{type}/{id}", method = RequestMethod.DELETE)
@ResponseBody @ResponseBody
public String delete(@PathVariable String type, @PathVariable Long id) { public String delete(@PathVariable String type, @PathVariable Long id) {
if(type == null || "".equals(type) || id == null || id < 1) { if (type == null || "".equals(type) || id == null || id < 1) {
return ok("参数错误"); return ok("参数错误");
} }
User currentUser = getCurrentUser(); User currentUser = getCurrentUser();
if(currentUser == null || !UserType.MANAGER.equals(currentUser.getType())) { if (currentUser == null || !UserType.MANAGER.equals(currentUser.getType())) {
return ok("权限不足"); return ok("权限不足");
} }
User leader = userService.findById(User.class, id); User leader = userService.findById(User.class, id);
...@@ -58,43 +58,43 @@ public class UserController extends BaseController { ...@@ -58,43 +58,43 @@ public class UserController extends BaseController {
return ok("注销成功"); return ok("注销成功");
} }
@RequestMapping(value= "/{type}/deleteBatch",method = RequestMethod.GET) @RequestMapping(value = "/{type}/deleteBatch", method = RequestMethod.GET)
@ResponseBody @ResponseBody
public String deleteBatch(@PathVariable String type, HttpServletRequest request){ public String deleteBatch(@PathVariable String type, HttpServletRequest request) {
if(type == null || "".equals(type)) { if (type == null || "".equals(type)) {
return ok("参数错误"); return ok("参数错误");
} }
User currentUser = getCurrentUser(); User currentUser = getCurrentUser();
if(currentUser == null || !UserType.MANAGER.equals(currentUser.getType())) { if (currentUser == null || !UserType.MANAGER.equals(currentUser.getType())) {
return ok("权限不足"); return ok("权限不足");
} }
String data = request.getParameter("data"); String data = request.getParameter("data");
ObjectMapper mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();
IdsJson json=null; IdsJson json = null;
try { try {
json = mapper.readValue(data, IdsJson.class); json = mapper.readValue(data, IdsJson.class);
} catch (Exception e) { } catch (Exception e) {
return failure("提交数据有误"); return failure("提交数据有误");
} }
if(json == null){ if (json == null) {
return failure("没有需要审核的数据"); return failure("没有需要审核的数据");
} }
for(long id:json.getIds()){ for (long id : json.getIds()) {
User leader = userService.findById(User.class, id); User leader = userService.findById(User.class, id);
leader.setStatus(Status.DESTORYED); leader.setStatus(Status.DESTORYED);
userService.update(leader); userService.update(leader);
} }
return ok("注销成功"); return ok("注销成功");
} }
@RequestMapping(value = "/{type}/{id}", method = RequestMethod.PUT) @RequestMapping(value = "/{type}/{id}", method = RequestMethod.PUT)
@ResponseBody @ResponseBody
public String update(@PathVariable String type, @PathVariable Long id, @RequestBody User user) { public String update(@PathVariable String type, @PathVariable Long id, @RequestBody User user) {
if(type == null || "".equals(type) || id == null || id < 1) { if (type == null || "".equals(type) || id == null || id < 1) {
return ok("参数错误"); return ok("参数错误");
} }
User currentUser = getCurrentUser(); User currentUser = getCurrentUser();
if(currentUser == null || !UserType.MANAGER.equals(currentUser.getType())) { if (currentUser == null || !UserType.MANAGER.equals(currentUser.getType())) {
return ok("权限不足"); return ok("权限不足");
} }
User existingLeader = userService.findById(User.class, id); User existingLeader = userService.findById(User.class, id);
...@@ -114,18 +114,18 @@ public class UserController extends BaseController { ...@@ -114,18 +114,18 @@ public class UserController extends BaseController {
return ok("更新成功"); return ok("更新成功");
} }
@RequestMapping(value="/{type}", method = RequestMethod.GET) @RequestMapping(value = "/{type}", method = RequestMethod.GET)
@ResponseBody @ResponseBody
public String list(@PathVariable String type, @RequestParam int start, @RequestParam int limit,@RequestParam(required = false) Object filter) { public String list(@PathVariable String type, @RequestParam int start, @RequestParam int limit, @RequestParam(required = false) Object filter) {
List<FilterRequest> filters = new ArrayList<FilterRequest>(); List<FilterRequest> filters = new ArrayList<FilterRequest>();
filters.add(new FilterRequest("type", type.toUpperCase())); filters.add(new FilterRequest("type", type.toUpperCase()));
if (filter != null) { if (filter != null) {
filters.addAll(JsonUtils.getListFromJsonArray(filter)); filters.addAll(JsonUtils.getListFromJsonArray(filter));
} }
List<User> data = userService.pagedDataSet(start, limit,filters); List<User> data = userService.pagedDataSet(start, limit, filters);
Long count = userService.pagedDataCount(filters); Long count = userService.pagedDataCount(filters);
return ok(data, count); return ok(data, count);
......
package com.originspark.drp.dao; package com.originspark.drp.dao;
public interface BaseDAO<T> { public interface BaseDAO<T> {
T findById(Class<T> c,Long id); T findById(Class<T> c, Long id);
T getReferance(Class<T> c,Long id);
T getReferance(Class<T> c, Long id);
T save(T entity); T save(T entity);
T update(T entity); T update(T entity);
void delete(T entity); void delete(T entity);
} }
...@@ -5,7 +5,7 @@ import javax.persistence.PersistenceContext; ...@@ -5,7 +5,7 @@ import javax.persistence.PersistenceContext;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@Transactional @Transactional
public abstract class BaseDAOSupport<T> implements BaseDAO<T>{ public abstract class BaseDAOSupport<T> implements BaseDAO<T> {
@PersistenceContext @PersistenceContext
protected EntityManager em; protected EntityManager em;
...@@ -14,8 +14,8 @@ public abstract class BaseDAOSupport<T> implements BaseDAO<T>{ ...@@ -14,8 +14,8 @@ public abstract class BaseDAOSupport<T> implements BaseDAO<T>{
em.remove(entity); em.remove(entity);
} }
@Transactional(readOnly=true) @Transactional(readOnly = true)
public T findById(Class<T> c,Long id) { public T findById(Class<T> c, Long id) {
return em.find(c, id); return em.find(c, id);
} }
...@@ -27,9 +27,9 @@ public abstract class BaseDAOSupport<T> implements BaseDAO<T>{ ...@@ -27,9 +27,9 @@ public abstract class BaseDAOSupport<T> implements BaseDAO<T>{
public T update(T entity) { public T update(T entity) {
return em.merge(entity); return em.merge(entity);
} }
@Transactional(readOnly=true) @Transactional(readOnly = true)
public T getReferance(Class<T> c,Long id){ public T getReferance(Class<T> c, Long id) {
return em.getReference(c, id); return em.getReference(c, id);
} }
......
...@@ -23,25 +23,25 @@ public abstract class AbstractModel { ...@@ -23,25 +23,25 @@ public abstract class AbstractModel {
/** /**
* 维护信息:记录创建日期 * 维护信息:记录创建日期
*/ */
@Column(name="createdOn", nullable=false) @Column(name = "createdOn", nullable = false)
private Date createdOn; private Date createdOn;
/** /**
* 维护信息:记录创建者 * 维护信息:记录创建者
*/ */
@Column(name="createdBy",length=10) @Column(name = "createdBy", length = 10)
private String createdBy; private String createdBy;
/** /**
* 维护信息:记录更新日期 * 维护信息:记录更新日期
*/ */
@Column(name="updatedOn", nullable=false) @Column(name = "updatedOn", nullable = false)
private Date updatedOn; private Date updatedOn;
/** /**
* 维护信息:记录更新者 * 维护信息:记录更新者
*/ */
@Column(name="updatedBy",length=10) @Column(name = "updatedBy", length = 10)
private String updatedBy; private String updatedBy;
/** /**
...@@ -105,12 +105,12 @@ public abstract class AbstractModel { ...@@ -105,12 +105,12 @@ public abstract class AbstractModel {
} }
@PreUpdate @PreUpdate
private void preUpdate(){ private void preUpdate() {
updatedOn = new Date(); updatedOn = new Date();
} }
@Override @Override
public String toString() { public String toString() {
return "id="+id+", updateOn="+updatedOn; return "id=" + id + ", updateOn=" + updatedOn;
} }
} }
\ No newline at end of file
...@@ -11,7 +11,7 @@ import com.originspark.drp.util.enums.Gender; ...@@ -11,7 +11,7 @@ import com.originspark.drp.util.enums.Gender;
import com.originspark.drp.util.enums.UserType; import com.originspark.drp.util.enums.UserType;
@Entity @Entity
@Table(name="users") @Table(name = "users")
public class User extends AbstractModel { public class User extends AbstractModel {
@Enumerated(EnumType.STRING) @Enumerated(EnumType.STRING)
......
package com.originspark.drp.processor; package com.originspark.drp.processor;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.http.MediaType;
import org.springframework.http.converter.StringHttpMessageConverter;
public class UTF8StringBeanPostProcessor implements BeanPostProcessor { import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.http.MediaType;
import org.springframework.http.converter.StringHttpMessageConverter;
@Override public class UTF8StringBeanPostProcessor implements BeanPostProcessor {
public Object postProcessAfterInitialization(Object bean, String beanName)
throws BeansException { @Override
if(bean instanceof StringHttpMessageConverter){ public Object postProcessAfterInitialization(Object bean, String beanName)
throws BeansException {
if (bean instanceof StringHttpMessageConverter) {
MediaType mediaType = new MediaType("text", "plain", Charset.forName("UTF-8")); MediaType mediaType = new MediaType("text", "plain", Charset.forName("UTF-8"));
List<MediaType> types = new ArrayList<MediaType>(); List<MediaType> types = new ArrayList<MediaType>();
types.add(mediaType); types.add(mediaType);
((StringHttpMessageConverter) bean).setSupportedMediaTypes(types); ((StringHttpMessageConverter) bean).setSupportedMediaTypes(types);
} }
return bean; return bean;
} }
@Override @Override
public Object postProcessBeforeInitialization(Object bean, String beanName) public Object postProcessBeforeInitialization(Object bean, String beanName)
throws BeansException { throws BeansException {
// do nothing // do nothing
return bean; return bean;
} }
} }
\ No newline at end of file
...@@ -18,7 +18,8 @@ import java.util.*; ...@@ -18,7 +18,8 @@ import java.util.*;
import java.security.*; import java.security.*;
/** /**
* A class that provides easy Blowfish encryption.<p> * A class that provides easy Blowfish encryption.
* <p>
* *
* @author Markus Hahn <markus_hahn@gmx.net> * @author Markus Hahn <markus_hahn@gmx.net>
*/ */
...@@ -37,12 +38,11 @@ public class Blowfish { ...@@ -37,12 +38,11 @@ public class Blowfish {
// hash down the password to a 160bit key // hash down the password to a 160bit key
MessageDigest digest = null; MessageDigest digest = null;
try { try {
String password="fc4e6e4090e9edfe4dcff438d095954d"; String password = "fc4e6e4090e9edfe4dcff438d095954d";
digest = MessageDigest.getInstance("SHA1"); digest = MessageDigest.getInstance("SHA1");
digest.update(password.getBytes()); digest.update(password.getBytes());
} } catch (Exception e) {
catch (Exception e) { // Log.error(e);
// Log.error(e);
e.printStackTrace(); e.printStackTrace();
} }
...@@ -74,11 +74,11 @@ public class Blowfish { ...@@ -74,11 +74,11 @@ public class Blowfish {
// Internal routine for string encryption // Internal routine for string encryption
private String encStr(String sPlainText, private String encStr(String sPlainText,
long lNewCBCIV) long lNewCBCIV)
{ {
// allocate the buffer (align to the next 8 byte border plus padding) // allocate the buffer (align to the next 8 byte border plus padding)
int nStrLen = sPlainText.length(); int nStrLen = sPlainText.length();
byte[] buf = new byte [((nStrLen << 1) & 0xfffffff8) + 8]; byte[] buf = new byte[((nStrLen << 1) & 0xfffffff8) + 8];
// copy all bytes of the string into the buffer (use network byte order) // copy all bytes of the string into the buffer (use network byte order)
int nI; int nI;
...@@ -87,11 +87,11 @@ public class Blowfish { ...@@ -87,11 +87,11 @@ public class Blowfish {
{ {
char cActChar = sPlainText.charAt(nI); char cActChar = sPlainText.charAt(nI);
buf[nPos++] = (byte) ((cActChar >> 8) & 0x0ff); buf[nPos++] = (byte) ((cActChar >> 8) & 0x0ff);
buf[nPos++] = (byte) (cActChar & 0x0ff) ; buf[nPos++] = (byte) (cActChar & 0x0ff);
} }
// pad the rest with the PKCS5 scheme // pad the rest with the PKCS5 scheme
byte bPadVal = (byte)(buf.length - (nStrLen << 1)); byte bPadVal = (byte) (buf.length - (nStrLen << 1));
while (nPos < buf.length) while (nPos < buf.length)
{ {
buf[nPos++] = bPadVal; buf[nPos++] = bPadVal;
...@@ -116,6 +116,7 @@ public class Blowfish { ...@@ -116,6 +116,7 @@ public class Blowfish {
/** /**
* decrypts a hexbin string (handling is case sensitive) * decrypts a hexbin string (handling is case sensitive)
*
* @param sCipherText hexbin string to decrypt * @param sCipherText hexbin string to decrypt
* @return decrypted string (null equals an error) * @return decrypted string (null equals an error)
*/ */
...@@ -168,7 +169,7 @@ public class Blowfish { ...@@ -168,7 +169,7 @@ public class Blowfish {
m_bfish.decrypt(buf); m_bfish.decrypt(buf);
// get the last padding byte // get the last padding byte
int nPadByte = (int)buf[buf.length - 1] & 0x0ff; int nPadByte = (int) buf[buf.length - 1] & 0x0ff;
// ( try to get all information if the padding doesn't seem to be correct) // ( try to get all information if the padding doesn't seem to be correct)
if ((nPadByte > 8) || (nPadByte < 0)) if ((nPadByte > 8) || (nPadByte < 0))
...@@ -199,6 +200,7 @@ public class Blowfish { ...@@ -199,6 +200,7 @@ public class Blowfish {
/** /**
* implementation of the Blowfish encryption algorithm in ECB mode * implementation of the Blowfish encryption algorithm in ECB mode
*
* @author Markus Hahn <markus_hahn@gmx.net> * @author Markus Hahn <markus_hahn@gmx.net>
* @version Feburary 14, 2001 * @version Feburary 14, 2001
*/ */
...@@ -225,6 +227,7 @@ public class Blowfish { ...@@ -225,6 +227,7 @@ public class Blowfish {
/** /**
* default constructor * default constructor
*
* @param bfkey key material, up to MAXKEYLENGTH bytes * @param bfkey key material, up to MAXKEYLENGTH bytes
*/ */
public BlowfishECB(byte[] bfkey) public BlowfishECB(byte[] bfkey)
...@@ -283,31 +286,31 @@ public class Blowfish { ...@@ -283,31 +286,31 @@ public class Blowfish {
{ {
lZero = encryptBlock(lZero); lZero = encryptBlock(lZero);
m_pbox[nI] = (int) (lZero >>> 32); m_pbox[nI] = (int) (lZero >>> 32);
m_pbox[nI+1] = (int) (lZero & 0x0ffffffffL); m_pbox[nI + 1] = (int) (lZero & 0x0ffffffffL);
} }
for (nI = 0; nI < SBOX_ENTRIES; nI += 2) for (nI = 0; nI < SBOX_ENTRIES; nI += 2)
{ {
lZero = encryptBlock(lZero); lZero = encryptBlock(lZero);
m_sbox1[nI] = (int) (lZero >>> 32); m_sbox1[nI] = (int) (lZero >>> 32);
m_sbox1[nI+1] = (int) (lZero & 0x0ffffffffL); m_sbox1[nI + 1] = (int) (lZero & 0x0ffffffffL);
} }
for (nI = 0; nI < SBOX_ENTRIES; nI += 2) for (nI = 0; nI < SBOX_ENTRIES; nI += 2)
{ {
lZero = encryptBlock(lZero); lZero = encryptBlock(lZero);
m_sbox2[nI] = (int) (lZero >>> 32); m_sbox2[nI] = (int) (lZero >>> 32);
m_sbox2[nI+1] = (int) (lZero & 0x0ffffffffL); m_sbox2[nI + 1] = (int) (lZero & 0x0ffffffffL);
} }
for (nI = 0; nI < SBOX_ENTRIES; nI += 2) for (nI = 0; nI < SBOX_ENTRIES; nI += 2)
{ {
lZero = encryptBlock(lZero); lZero = encryptBlock(lZero);
m_sbox3[nI] = (int) (lZero >>> 32); m_sbox3[nI] = (int) (lZero >>> 32);
m_sbox3[nI+1] = (int) (lZero & 0x0ffffffffL); m_sbox3[nI + 1] = (int) (lZero & 0x0ffffffffL);
} }
for (nI = 0; nI < SBOX_ENTRIES; nI += 2) for (nI = 0; nI < SBOX_ENTRIES; nI += 2)
{ {
lZero = encryptBlock(lZero); lZero = encryptBlock(lZero);
m_sbox4[nI] = (int) (lZero >>> 32); m_sbox4[nI] = (int) (lZero >>> 32);
m_sbox4[nI+1] = (int) (lZero & 0x0ffffffffL); m_sbox4[nI + 1] = (int) (lZero & 0x0ffffffffL);
} }
} }
...@@ -331,23 +334,34 @@ public class Blowfish { ...@@ -331,23 +334,34 @@ public class Blowfish {
/** /**
* selftest routine, to check e.g. for a valid class file transmission * selftest routine, to check e.g. for a valid class file transmission
*
* @return true: selftest passed / false: selftest failed * @return true: selftest passed / false: selftest failed
*/ */
public static boolean selfTest() public static boolean selfTest()
{ {
// test vector #1 (checking for the "signed bug") // test vector #1 (checking for the "signed bug")
byte[] testKey1 = { (byte) 0x1c, (byte) 0x58, (byte) 0x7f, (byte) 0x1c, byte[] testKey1 = {
(byte) 0x13, (byte) 0x92, (byte) 0x4f, (byte) 0xef }; (byte) 0x1c, (byte) 0x58, (byte) 0x7f, (byte) 0x1c,
int[] tv_p1 = { 0x30553228, 0x6d6f295a }; (byte) 0x13, (byte) 0x92, (byte) 0x4f, (byte) 0xef
int[] tv_c1 = { 0x55cb3774, 0xd13ef201 }; };
int[] tv_p1 = {
0x30553228, 0x6d6f295a
};
int[] tv_c1 = {
0x55cb3774, 0xd13ef201
};
int[] tv_t1 = new int[2]; int[] tv_t1 = new int[2];
// test vector #2 (offical vector by Bruce Schneier) // test vector #2 (offical vector by Bruce Schneier)
String sTestKey2 = "Who is John Galt?"; String sTestKey2 = "Who is John Galt?";
byte[] testKey2 = sTestKey2.getBytes(); byte[] testKey2 = sTestKey2.getBytes();
int[] tv_p2 = { 0xfedcba98, 0x76543210 }; int[] tv_p2 = {
int[] tv_c2 = { 0xcc91732b, 0x8022f684 }; 0xfedcba98, 0x76543210
};
int[] tv_c2 = {
0xcc91732b, 0x8022f684
};
int[] tv_t2 = new int[2]; int[] tv_t2 = new int[2];
...@@ -474,7 +488,7 @@ public class Blowfish { ...@@ -474,7 +488,7 @@ public class Blowfish {
public void encrypt(byte[] inbuffer, byte[] outbuffer) { public void encrypt(byte[] inbuffer, byte[] outbuffer) {
int nLen = inbuffer.length; int nLen = inbuffer.length;
long lTemp; long lTemp;
for (int nI = 0; nI < nLen; nI +=8) for (int nI = 0; nI < nLen; nI += 8)
{ {
// encrypt a temporary 64bit block // encrypt a temporary 64bit block
lTemp = byteArrayToLong(inbuffer, nI); lTemp = byteArrayToLong(inbuffer, nI);
...@@ -485,13 +499,14 @@ public class Blowfish { ...@@ -485,13 +499,14 @@ public class Blowfish {
/** /**
* encrypts a byte buffer (should be aligned to an 8 byte border) to itself * encrypts a byte buffer (should be aligned to an 8 byte border) to itself
*
* @param buffer buffer to encrypt * @param buffer buffer to encrypt
*/ */
public void encrypt(byte[] buffer) public void encrypt(byte[] buffer)
{ {
int nLen = buffer.length; int nLen = buffer.length;
long lTemp; long lTemp;
for (int nI = 0; nI < nLen; nI +=8) for (int nI = 0; nI < nLen; nI += 8)
{ {
// encrypt a temporary 64bit block // encrypt a temporary 64bit block
lTemp = byteArrayToLong(buffer, nI); lTemp = byteArrayToLong(buffer, nI);
...@@ -504,13 +519,14 @@ public class Blowfish { ...@@ -504,13 +519,14 @@ public class Blowfish {
* encrypts an integer buffer (should be aligned to an * encrypts an integer buffer (should be aligned to an
* two integer border) to another int buffer (of the * two integer border) to another int buffer (of the
* same size or bigger) * same size or bigger)
*
* @param inbuffer buffer with plaintext data * @param inbuffer buffer with plaintext data
* @param outbuffer buffer to get the ciphertext data * @param outbuffer buffer to get the ciphertext data
*/ */
public void encrypt(int[] inbuffer, int[] outbuffer) { public void encrypt(int[] inbuffer, int[] outbuffer) {
int nLen = inbuffer.length; int nLen = inbuffer.length;
long lTemp; long lTemp;
for (int nI = 0; nI < nLen; nI +=2) for (int nI = 0; nI < nLen; nI += 2)
{ {
// encrypt a temporary 64bit block // encrypt a temporary 64bit block
lTemp = intArrayToLong(inbuffer, nI); lTemp = intArrayToLong(inbuffer, nI);
...@@ -522,12 +538,13 @@ public class Blowfish { ...@@ -522,12 +538,13 @@ public class Blowfish {
/** /**
* encrypts an int buffer (should be aligned to a * encrypts an int buffer (should be aligned to a
* two integer border) * two integer border)
*
* @param buffer buffer to encrypt * @param buffer buffer to encrypt
*/ */
public void encrypt(int[] buffer) { public void encrypt(int[] buffer) {
int nLen = buffer.length; int nLen = buffer.length;
long lTemp; long lTemp;
for (int nI = 0; nI < nLen; nI +=2) for (int nI = 0; nI < nLen; nI += 2)
{ {
// encrypt a temporary 64bit block // encrypt a temporary 64bit block
lTemp = intArrayToLong(buffer, nI); lTemp = intArrayToLong(buffer, nI);
...@@ -538,6 +555,7 @@ public class Blowfish { ...@@ -538,6 +555,7 @@ public class Blowfish {
/** /**
* encrypts a long buffer to another long buffer (of the same size or bigger) * encrypts a long buffer to another long buffer (of the same size or bigger)
*
* @param inbuffer buffer with plaintext data * @param inbuffer buffer with plaintext data
* @param outbuffer buffer to get the ciphertext data * @param outbuffer buffer to get the ciphertext data
*/ */
...@@ -551,6 +569,7 @@ public class Blowfish { ...@@ -551,6 +569,7 @@ public class Blowfish {
/** /**
* encrypts a long buffer to itself * encrypts a long buffer to itself
*
* @param buffer buffer to encrypt * @param buffer buffer to encrypt
*/ */
public void encrypt(long[] buffer) { public void encrypt(long[] buffer) {
...@@ -564,15 +583,16 @@ public class Blowfish { ...@@ -564,15 +583,16 @@ public class Blowfish {
/** /**
* decrypts a byte buffer (should be aligned to an 8 byte border) * decrypts a byte buffer (should be aligned to an 8 byte border)
* to another byte buffer (of the same size or bigger) * to another byte buffer (of the same size or bigger)
*
* @param inbuffer buffer with ciphertext data * @param inbuffer buffer with ciphertext data
* @param outbuffer buffer to get the plaintext data * @param outbuffer buffer to get the plaintext data
*/ */
public void decrypt(byte[] inbuffer, public void decrypt(byte[] inbuffer,
byte[] outbuffer) byte[] outbuffer)
{ {
int nLen = inbuffer.length; int nLen = inbuffer.length;
long lTemp; long lTemp;
for (int nI = 0; nI < nLen; nI +=8) for (int nI = 0; nI < nLen; nI += 8)
{ {
// decrypt a temporary 64bit block // decrypt a temporary 64bit block
lTemp = byteArrayToLong(inbuffer, nI); lTemp = byteArrayToLong(inbuffer, nI);
...@@ -583,13 +603,14 @@ public class Blowfish { ...@@ -583,13 +603,14 @@ public class Blowfish {
/** /**
* decrypts a byte buffer (should be aligned to an 8 byte border) to itself * decrypts a byte buffer (should be aligned to an 8 byte border) to itself
*
* @param buffer buffer to decrypt * @param buffer buffer to decrypt
*/ */
public void decrypt(byte[] buffer) public void decrypt(byte[] buffer)
{ {
int nLen = buffer.length; int nLen = buffer.length;
long lTemp; long lTemp;
for (int nI = 0; nI < nLen; nI +=8) for (int nI = 0; nI < nLen; nI += 8)
{ {
// decrypt over a temporary 64bit block // decrypt over a temporary 64bit block
lTemp = byteArrayToLong(buffer, nI); lTemp = byteArrayToLong(buffer, nI);
...@@ -601,15 +622,16 @@ public class Blowfish { ...@@ -601,15 +622,16 @@ public class Blowfish {
/** /**
* decrypts an integer buffer (should be aligned to an * decrypts an integer buffer (should be aligned to an
* two integer border) to another int buffer (of the same size or bigger) * two integer border) to another int buffer (of the same size or bigger)
*
* @param inbuffer buffer with ciphertext data * @param inbuffer buffer with ciphertext data
* @param outbuffer buffer to get the plaintext data * @param outbuffer buffer to get the plaintext data
*/ */
public void decrypt(int[] inbuffer, public void decrypt(int[] inbuffer,
int[] outbuffer) int[] outbuffer)
{ {
int nLen = inbuffer.length; int nLen = inbuffer.length;
long lTemp; long lTemp;
for (int nI = 0; nI < nLen; nI +=2) for (int nI = 0; nI < nLen; nI += 2)
{ {
// decrypt a temporary 64bit block // decrypt a temporary 64bit block
lTemp = intArrayToLong(inbuffer, nI); lTemp = intArrayToLong(inbuffer, nI);
...@@ -621,13 +643,14 @@ public class Blowfish { ...@@ -621,13 +643,14 @@ public class Blowfish {
/** /**
* decrypts an int buffer (should be aligned to an * decrypts an int buffer (should be aligned to an
* two integer border) * two integer border)
*
* @param buffer buffer to decrypt * @param buffer buffer to decrypt
*/ */
public void decrypt(int[] buffer) public void decrypt(int[] buffer)
{ {
int nLen = buffer.length; int nLen = buffer.length;
long lTemp; long lTemp;
for (int nI = 0; nI < nLen; nI +=2) for (int nI = 0; nI < nLen; nI += 2)
{ {
// decrypt a temporary 64bit block // decrypt a temporary 64bit block
lTemp = intArrayToLong(buffer, nI); lTemp = intArrayToLong(buffer, nI);
...@@ -638,11 +661,12 @@ public class Blowfish { ...@@ -638,11 +661,12 @@ public class Blowfish {
/** /**
* decrypts a long buffer to another long buffer (of the same size or bigger) * decrypts a long buffer to another long buffer (of the same size or bigger)
*
* @param inbuffer buffer with ciphertext data * @param inbuffer buffer with ciphertext data
* @param outbuffer buffer to get the plaintext data * @param outbuffer buffer to get the plaintext data
*/ */
public void decrypt(long[] inbuffer, public void decrypt(long[] inbuffer,
long[] outbuffer) long[] outbuffer)
{ {
int nLen = inbuffer.length; int nLen = inbuffer.length;
for (int nI = 0; nI < nLen; nI++) for (int nI = 0; nI < nLen; nI++)
...@@ -653,6 +677,7 @@ public class Blowfish { ...@@ -653,6 +677,7 @@ public class Blowfish {
/** /**
* decrypts a long buffer to itself * decrypts a long buffer to itself
*
* @param buffer buffer to decrypt * @param buffer buffer to decrypt
*/ */
public void decrypt(long[] buffer) { public void decrypt(long[] buffer) {
...@@ -666,201 +691,206 @@ public class Blowfish { ...@@ -666,201 +691,206 @@ public class Blowfish {
// the boxes init. data, // the boxes init. data,
// FIXME: it might be better to create them at runtime to make the class // FIXME: it might be better to create them at runtime to make the class
// file smaller, e.g. by calculating the hexdigits of pi (default) // file smaller, e.g. by calculating the hexdigits of pi (default)
// or just a fixed random sequence (out of the standard) // or just a fixed random sequence (out of the standard)
final static int pbox_init[] = { final static int pbox_init[] = {
0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0, 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0,
0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, 0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,
0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, 0x9216d5d9, 0x8979fb1b }; 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, 0x9216d5d9, 0x8979fb1b
};
final static int sbox_init_1[] = { final static int sbox_init_1[] = {
0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96, 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96,
0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, 0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16,
0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, 0x0d95748f, 0x728eb658, 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, 0x0d95748f, 0x728eb658,
0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, 0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013,
0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e, 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e,
0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60, 0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60,
0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, 0x55ca396a, 0x2aab10b6, 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, 0x55ca396a, 0x2aab10b6,
0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a, 0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a,
0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c, 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c,
0x7a325381, 0x28958677, 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193, 0x7a325381, 0x28958677, 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,
0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 0xef845d5d, 0xe98575b1, 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 0xef845d5d, 0xe98575b1,
0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239, 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239,
0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a, 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a,
0x670c9c61, 0xabd388f0, 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, 0x670c9c61, 0xabd388f0, 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3,
0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, 0xa1f1651d, 0x39af0176, 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, 0xa1f1651d, 0x39af0176,
0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe, 0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe,
0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 0x4ed3aa62, 0x363f7706, 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 0x4ed3aa62, 0x363f7706,
0x1bfedf72, 0x429b023d, 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b, 0x1bfedf72, 0x429b023d, 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b,
0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b, 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b,
0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463, 0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,
0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f, 0x9b30952c, 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f, 0x9b30952c,
0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3, 0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3,
0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, 0x5579c0bd, 0x1a60320a, 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, 0x5579c0bd, 0x1a60320a,
0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, 0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8,
0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760, 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760,
0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db, 0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db,
0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, 0x695b27b0, 0xbbca58c8, 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, 0x695b27b0, 0xbbca58c8,
0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b,
0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33, 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33,
0x62fb1341, 0xcee4c6e8, 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4, 0x62fb1341, 0xcee4c6e8, 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,
0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 0xd08ed1d0, 0xafc725e0, 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 0xd08ed1d0, 0xafc725e0,
0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c, 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c,
0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777, 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777,
0xea752dfe, 0x8b021fa1, 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, 0xea752dfe, 0x8b021fa1, 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299,
0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 0x165fa266, 0x80957705, 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 0x165fa266, 0x80957705,
0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf, 0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf,
0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 0x00250e2d, 0x2071b35e, 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 0x00250e2d, 0x2071b35e,
0x226800bb, 0x57b8e0af, 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa, 0x226800bb, 0x57b8e0af, 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa,
0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, 0x83260376, 0x6295cfa9, 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, 0x83260376, 0x6295cfa9,
0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915, 0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,
0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5, 0x571be91f, 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5, 0x571be91f,
0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664, 0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664,
0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a }; 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a
};
final static int sbox_init_2[] = { final static int sbox_init_2[] = {
0x4b7a70e9, 0xb5b32944, 0x4b7a70e9, 0xb5b32944,
0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266, 0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266,
0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, 0x193602a5, 0x75094c29, 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, 0x193602a5, 0x75094c29,
0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6, 0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6,
0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, 0x4cdd2086, 0x8470eb26, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, 0x4cdd2086, 0x8470eb26,
0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1, 0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1,
0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, 0x3e07841c, 0x7fdeae5c, 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, 0x3e07841c, 0x7fdeae5c,
0x8e7d44ec, 0x5716f2b8, 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff, 0x8e7d44ec, 0x5716f2b8, 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff,
0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, 0xd19113f9, 0x7ca92ff6, 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, 0xd19113f9, 0x7ca92ff6,
0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7,
0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, 0xe238cd99, 0x3bea0e2f, 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, 0xe238cd99, 0x3bea0e2f,
0x3280bba1, 0x183eb331, 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf, 0x3280bba1, 0x183eb331, 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf,
0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, 0xde9a771f, 0xd9930810, 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, 0xde9a771f, 0xd9930810,
0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87, 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87,
0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, 0xec7aec3a, 0xdb851dfa, 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, 0xec7aec3a, 0xdb851dfa,
0x63094366, 0xc464c3d2, 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16, 0x63094366, 0xc464c3d2, 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16,
0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, 0x71dff89e, 0x10314e55, 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, 0x71dff89e, 0x10314e55,
0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509, 0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509,
0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, 0x86e34570, 0xeae96fb1, 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, 0x86e34570, 0xeae96fb1,
0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f, 0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f,
0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, 0xc6150eba, 0x94e2ea78, 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, 0xc6150eba, 0x94e2ea78,
0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960, 0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960,
0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, 0xe3bc4595, 0xa67bc883, 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, 0xe3bc4595, 0xa67bc883,
0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802, 0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802,
0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, 0x1521b628, 0x29076170, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, 0x1521b628, 0x29076170,
0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf, 0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf,
0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, 0xeecc86bc, 0x60622ca7, 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, 0xeecc86bc, 0x60622ca7,
0x9cab5cab, 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50, 0x9cab5cab, 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50,
0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, 0x9b540b19, 0x875fa099, 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, 0x9b540b19, 0x875fa099,
0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281,
0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, 0x57f584a5, 0x1b227263, 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, 0x57f584a5, 0x1b227263,
0x9b83c3ff, 0x1ac24696, 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128, 0x9b83c3ff, 0x1ac24696, 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128,
0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, 0x5d4a14d9, 0xe864b7e3, 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, 0x5d4a14d9, 0xe864b7e3,
0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0, 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0,
0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, 0xd81e799e, 0x86854dc7, 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, 0xd81e799e, 0x86854dc7,
0xe44b476a, 0x3d816250, 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3, 0xe44b476a, 0x3d816250, 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3,
0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, 0x095bbf00, 0xad19489d, 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, 0x095bbf00, 0xad19489d,
0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061, 0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061,
0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, 0x7cde3759, 0xcbee7460, 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, 0x7cde3759, 0xcbee7460,
0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735, 0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735,
0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, 0x9e447a2e, 0xc3453484, 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, 0x9e447a2e, 0xc3453484,
0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340, 0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340,
0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, 0x153e21e7, 0x8fb03d4a, 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, 0x153e21e7, 0x8fb03d4a,
0xe6e39f2b, 0xdb83adf7 }; 0xe6e39f2b, 0xdb83adf7
};
final static int sbox_init_3[] = { final static int sbox_init_3[] = {
0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934,
0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068, 0xd4082471, 0x3320f46a, 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068, 0xd4082471, 0x3320f46a,
0x43b7d4b7, 0x500061af, 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, 0x43b7d4b7, 0x500061af, 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840,
0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785, 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785,
0x7fac6dd0, 0x31cb8504, 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, 0x7fac6dd0, 0x31cb8504, 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a,
0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, 0x68dc1462, 0xd7486900, 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, 0x68dc1462, 0xd7486900,
0x680ec0a4, 0x27a18dee, 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, 0x680ec0a4, 0x27a18dee, 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6,
0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42, 0x20fe9e35, 0xd9f385b9, 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42, 0x20fe9e35, 0xd9f385b9,
0xee39d7ab, 0x3b124e8b, 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, 0xee39d7ab, 0x3b124e8b, 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2,
0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397, 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397,
0x454056ac, 0xba489527, 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, 0x454056ac, 0xba489527, 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b,
0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33, 0xa62a4a56, 0x3f3125f9, 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33, 0xa62a4a56, 0x3f3125f9,
0x5ef47e1c, 0x9029317c, 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, 0x5ef47e1c, 0x9029317c, 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3,
0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc, 0x07f9c9ee, 0x41041f0f, 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc, 0x07f9c9ee, 0x41041f0f,
0x404779a4, 0x5d886e17, 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, 0x404779a4, 0x5d886e17, 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564,
0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2, 0x02e1329e, 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2, 0x02e1329e,
0xaf664fd1, 0xcad18115, 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, 0xaf664fd1, 0xcad18115, 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922,
0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728, 0xd0127845, 0x95b794fd, 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728, 0xd0127845, 0x95b794fd,
0x647d0862, 0xe7ccf5f0, 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, 0x647d0862, 0xe7ccf5f0, 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e,
0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8, 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8,
0x991be14c, 0xdb6e6b0d, 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, 0x991be14c, 0xdb6e6b0d, 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804,
0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b, 0x667b9ffb, 0xcedb7d9c, 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b, 0x667b9ffb, 0xcedb7d9c,
0xa091cf0b, 0xd9155ea3, 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, 0xa091cf0b, 0xd9155ea3, 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb,
0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b, 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b,
0x12754ccc, 0x782ef11c, 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, 0x12754ccc, 0x782ef11c, 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350,
0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, 0x44421659, 0x0a121386, 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, 0x44421659, 0x0a121386,
0xd90cec6e, 0xd5abea2a, 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, 0xd90cec6e, 0xd5abea2a, 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe,
0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d, 0xd1fd8346, 0xf6381fb0, 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d, 0xd1fd8346, 0xf6381fb0,
0x7745ae04, 0xd736fccc, 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, 0x7745ae04, 0xd736fccc, 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f,
0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61, 0x4e58f48f, 0xf2ddfda2, 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61, 0x4e58f48f, 0xf2ddfda2,
0xf474ef38, 0x8789bdc2, 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, 0xf474ef38, 0x8789bdc2, 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9,
0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2, 0x466e598e, 0x20b45770, 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2, 0x466e598e, 0x20b45770,
0x8cd55591, 0xc902de4c, 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, 0x8cd55591, 0xc902de4c, 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e,
0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633, 0xe85a1f02, 0x09f0be8c, 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633, 0xe85a1f02, 0x09f0be8c,
0x4a99a025, 0x1d6efe10, 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, 0x4a99a025, 0x1d6efe10, 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169,
0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, 0x50115e01, 0xa70683fa, 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, 0x50115e01, 0xa70683fa,
0xa002b5c4, 0x0de6d027, 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, 0xa002b5c4, 0x0de6d027, 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5,
0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62, 0x11e69ed7, 0x2338ea63, 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62, 0x11e69ed7, 0x2338ea63,
0x53c2dd94, 0xc2c21634, 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, 0x53c2dd94, 0xc2c21634, 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76,
0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9, 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9,
0x1ac15bb4, 0xd39eb8fc, 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, 0x1ac15bb4, 0xd39eb8fc, 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4,
0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c, 0x6fd5c7e7, 0x56e14ec4, 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c, 0x6fd5c7e7, 0x56e14ec4,
0x362abfce, 0xddc6c837, 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0 }; 0x362abfce, 0xddc6c837, 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0
};
final static int sbox_init_4[] = { final static int sbox_init_4[] = {
0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742, 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742,
0xd3822740, 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b, 0xd3822740, 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,
0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 0x5748ab2f, 0xbc946e79, 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 0x5748ab2f, 0xbc946e79,
0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6, 0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6,
0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a, 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a,
0x63ef8ce2, 0x9a86ee22, 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, 0x63ef8ce2, 0x9a86ee22, 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4,
0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ae1, 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ae1,
0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59, 0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59,
0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, 0xe990fd5a, 0x9e34d797, 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, 0xe990fd5a, 0x9e34d797,
0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, 0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28,
0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6, 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6,
0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28, 0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,
0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4, 0x88f46dba, 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4, 0x88f46dba,
0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a, 0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a,
0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, 0x7533d928, 0xb155fdf5, 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, 0x7533d928, 0xb155fdf5,
0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, 0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f,
0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce, 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce,
0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680, 0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680,
0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, 0xb39a460a, 0x6445c0dd, 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, 0xb39a460a, 0x6445c0dd,
0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, 0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb,
0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb, 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb,
0x8d6612ae, 0xbf3c6f47, 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370, 0x8d6612ae, 0xbf3c6f47, 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,
0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 0x4040cb08, 0x4eb4e2cc, 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 0x4040cb08, 0x4eb4e2cc,
0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048, 0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048,
0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, 0x611560b1, 0xe7933fdc, 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, 0x611560b1, 0xe7933fdc,
0xbb3a792b, 0x344525bd, 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, 0xbb3a792b, 0x344525bd, 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9,
0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 0x1a908749, 0xd44fbd9a, 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 0x1a908749, 0xd44fbd9a,
0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f, 0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f,
0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, 0xbf97222c, 0x15e6fc2a, 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, 0xbf97222c, 0x15e6fc2a,
0x0f91fc71, 0x9b941525, 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1, 0x0f91fc71, 0x9b941525, 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1,
0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, 0xe0ec6e0e, 0x1698db3b, 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, 0xe0ec6e0e, 0x1698db3b,
0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e, 0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,
0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d, 0x9b992f2e, 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d, 0x9b992f2e,
0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f, 0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f,
0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, 0xf523f357, 0xa6327623, 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, 0xf523f357, 0xa6327623,
0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, 0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc,
0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a, 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a,
0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6, 0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6,
0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, 0x53113ec0, 0x1640e3d3, 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, 0x53113ec0, 0x1640e3d3,
0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060, 0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060,
0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c, 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c,
0x01c36ae4, 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f, 0x01c36ae4, 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,
0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6 }; 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6
};
} }
...@@ -872,6 +902,7 @@ public class Blowfish { ...@@ -872,6 +902,7 @@ public class Blowfish {
/** /**
* get the current CBC IV (for cipher resets) * get the current CBC IV (for cipher resets)
*
* @return current CBC IV * @return current CBC IV
*/ */
public long getCBCIV() public long getCBCIV()
...@@ -881,6 +912,7 @@ public class Blowfish { ...@@ -881,6 +912,7 @@ public class Blowfish {
/** /**
* get the current CBC IV (for cipher resets) * get the current CBC IV (for cipher resets)
*
* @param dest wher eto put current CBC IV in network byte ordered array * @param dest wher eto put current CBC IV in network byte ordered array
*/ */
public void getCBCIV(byte[] dest) public void getCBCIV(byte[] dest)
...@@ -890,6 +922,7 @@ public class Blowfish { ...@@ -890,6 +922,7 @@ public class Blowfish {
/** /**
* set the current CBC IV (for cipher resets) * set the current CBC IV (for cipher resets)
*
* @param lNewCBCIV the new CBC IV * @param lNewCBCIV the new CBC IV
*/ */
public void setCBCIV(long lNewCBCIV) public void setCBCIV(long lNewCBCIV)
...@@ -899,7 +932,8 @@ public class Blowfish { ...@@ -899,7 +932,8 @@ public class Blowfish {
/** /**
* set the current CBC IV (for cipher resets) * set the current CBC IV (for cipher resets)
* @param newCBCIV the new CBC IV in network byte ordered array *
* @param newCBCIV the new CBC IV in network byte ordered array
*/ */
public void setCBCIV(byte[] newCBCIV) public void setCBCIV(byte[] newCBCIV)
{ {
...@@ -909,6 +943,7 @@ public class Blowfish { ...@@ -909,6 +943,7 @@ public class Blowfish {
/** /**
* constructor, stores a zero CBC IV * constructor, stores a zero CBC IV
*
* @param bfkey key material, up to MAXKEYLENGTH bytes * @param bfkey key material, up to MAXKEYLENGTH bytes
*/ */
public BlowfishCBC(byte[] bfkey) public BlowfishCBC(byte[] bfkey)
...@@ -922,11 +957,12 @@ public class Blowfish { ...@@ -922,11 +957,12 @@ public class Blowfish {
/** /**
* constructor * constructor
*
* @param bfkey key material, up to MAXKEYLENGTH bytes * @param bfkey key material, up to MAXKEYLENGTH bytes
* @param lInitCBCIV the CBC IV * @param lInitCBCIV the CBC IV
*/ */
public BlowfishCBC(byte[] bfkey, public BlowfishCBC(byte[] bfkey,
long lInitCBCIV) long lInitCBCIV)
{ {
super(bfkey); super(bfkey);
...@@ -937,11 +973,12 @@ public class Blowfish { ...@@ -937,11 +973,12 @@ public class Blowfish {
/** /**
* constructor * constructor
*
* @param bfkey key material, up to MAXKEYLENGTH bytes * @param bfkey key material, up to MAXKEYLENGTH bytes
* @param initCBCIV the CBC IV (array with min. BLOCKSIZE bytes) * @param initCBCIV the CBC IV (array with min. BLOCKSIZE bytes)
*/ */
public BlowfishCBC(byte[] bfkey, public BlowfishCBC(byte[] bfkey,
byte[] initCBCIV) byte[] initCBCIV)
{ {
super(bfkey); super(bfkey);
...@@ -999,15 +1036,16 @@ public class Blowfish { ...@@ -999,15 +1036,16 @@ public class Blowfish {
/** /**
* encrypts a byte buffer (should be aligned to an 8 byte border) * encrypts a byte buffer (should be aligned to an 8 byte border)
* to another buffer (of the same size or bigger) * to another buffer (of the same size or bigger)
*
* @param inbuffer buffer with plaintext data * @param inbuffer buffer with plaintext data
* @param outbuffer buffer to get the ciphertext data * @param outbuffer buffer to get the ciphertext data
*/ */
public void encrypt(byte[] inbuffer, public void encrypt(byte[] inbuffer,
byte[] outbuffer) byte[] outbuffer)
{ {
int nLen = inbuffer.length; int nLen = inbuffer.length;
long lTemp; long lTemp;
for (int nI = 0; nI < nLen; nI +=8) for (int nI = 0; nI < nLen; nI += 8)
{ {
// encrypt a temporary 64bit block // encrypt a temporary 64bit block
lTemp = byteArrayToLong(inbuffer, nI); lTemp = byteArrayToLong(inbuffer, nI);
...@@ -1020,6 +1058,7 @@ public class Blowfish { ...@@ -1020,6 +1058,7 @@ public class Blowfish {
/** /**
* encrypts a byte buffer (should be aligned to an 8 byte border) to itself * encrypts a byte buffer (should be aligned to an 8 byte border) to itself
*
* @param buffer buffer to encrypt * @param buffer buffer to encrypt
*/ */
public void encrypt(byte[] buffer) public void encrypt(byte[] buffer)
...@@ -1027,7 +1066,7 @@ public class Blowfish { ...@@ -1027,7 +1066,7 @@ public class Blowfish {
int nLen = buffer.length; int nLen = buffer.length;
long lTemp; long lTemp;
for (int nI = 0; nI < nLen; nI +=8) for (int nI = 0; nI < nLen; nI += 8)
{ {
// encrypt a temporary 64bit block // encrypt a temporary 64bit block
lTemp = byteArrayToLong(buffer, nI); lTemp = byteArrayToLong(buffer, nI);
...@@ -1038,20 +1077,20 @@ public class Blowfish { ...@@ -1038,20 +1077,20 @@ public class Blowfish {
/** /**
* encrypts an int buffer (should be aligned to an * encrypts an int buffer (should be aligned to an
* two integer border) to another int buffer (of the same * two integer border) to another int buffer (of the same
* size or bigger) * size or bigger)
*
* @param inbuffer buffer with plaintext data * @param inbuffer buffer with plaintext data
* @param outbuffer buffer to get the ciphertext data * @param outbuffer buffer to get the ciphertext data
*/ */
public void encrypt(int[] inbuffer, public void encrypt(int[] inbuffer,
int[] outbuffer) int[] outbuffer)
{ {
int nLen = inbuffer.length; int nLen = inbuffer.length;
long lTemp; long lTemp;
for (int nI = 0; nI < nLen; nI +=2) for (int nI = 0; nI < nLen; nI += 2)
{ {
// encrypt a temporary 64bit block // encrypt a temporary 64bit block
lTemp = intArrayToLong(inbuffer, nI); lTemp = intArrayToLong(inbuffer, nI);
...@@ -1063,13 +1102,14 @@ public class Blowfish { ...@@ -1063,13 +1102,14 @@ public class Blowfish {
/** /**
* encrypts an integer buffer (should be aligned to an * encrypts an integer buffer (should be aligned to an
*
* @param buffer buffer to encrypt * @param buffer buffer to encrypt
*/ */
public void encrypt(int[] buffer) public void encrypt(int[] buffer)
{ {
int nLen = buffer.length; int nLen = buffer.length;
long lTemp; long lTemp;
for (int nI = 0; nI < nLen; nI +=2) for (int nI = 0; nI < nLen; nI += 2)
{ {
// encrypt a temporary 64bit block // encrypt a temporary 64bit block
lTemp = intArrayToLong(buffer, nI); lTemp = intArrayToLong(buffer, nI);
...@@ -1082,11 +1122,12 @@ public class Blowfish { ...@@ -1082,11 +1122,12 @@ public class Blowfish {
/** /**
* encrypts a long buffer to another long buffer (of the same size or bigger) * encrypts a long buffer to another long buffer (of the same size or bigger)
*
* @param inbuffer buffer with plaintext data * @param inbuffer buffer with plaintext data
* @param outbuffer buffer to get the ciphertext data * @param outbuffer buffer to get the ciphertext data
*/ */
public void encrypt(long[] inbuffer, public void encrypt(long[] inbuffer,
long[] outbuffer) long[] outbuffer)
{ {
int nLen = inbuffer.length; int nLen = inbuffer.length;
for (int nI = 0; nI < nLen; nI++) for (int nI = 0; nI < nLen; nI++)
...@@ -1099,6 +1140,7 @@ public class Blowfish { ...@@ -1099,6 +1140,7 @@ public class Blowfish {
/** /**
* encrypts a long buffer to itself * encrypts a long buffer to itself
*
* @param buffer buffer to encrypt * @param buffer buffer to encrypt
*/ */
public void encrypt(long[] buffer) public void encrypt(long[] buffer)
...@@ -1115,15 +1157,16 @@ public class Blowfish { ...@@ -1115,15 +1157,16 @@ public class Blowfish {
/** /**
* decrypts a byte buffer (should be aligned to an 8 byte border) * decrypts a byte buffer (should be aligned to an 8 byte border)
* to another buffer (of the same size or bigger) * to another buffer (of the same size or bigger)
*
* @param inbuffer buffer with ciphertext data * @param inbuffer buffer with ciphertext data
* @param outbuffer buffer to get the plaintext data * @param outbuffer buffer to get the plaintext data
*/ */
public void decrypt(byte[] inbuffer, public void decrypt(byte[] inbuffer,
byte[] outbuffer) byte[] outbuffer)
{ {
int nLen = inbuffer.length; int nLen = inbuffer.length;
long lTemp; long lTemp;
for (int nI = 0; nI < nLen; nI +=8) for (int nI = 0; nI < nLen; nI += 8)
{ {
// decrypt a temporary 64bit block // decrypt a temporary 64bit block
lTemp = byteArrayToLong(inbuffer, nI); lTemp = byteArrayToLong(inbuffer, nI);
...@@ -1136,13 +1179,14 @@ public class Blowfish { ...@@ -1136,13 +1179,14 @@ public class Blowfish {
/** /**
* decrypts a byte buffer (should be aligned to an 8 byte border) to itself * decrypts a byte buffer (should be aligned to an 8 byte border) to itself
*
* @param buffer buffer to decrypt * @param buffer buffer to decrypt
*/ */
public void decrypt(byte[] buffer) public void decrypt(byte[] buffer)
{ {
int nLen = buffer.length; int nLen = buffer.length;
long lTemp; long lTemp;
for (int nI = 0; nI < nLen; nI +=8) for (int nI = 0; nI < nLen; nI += 8)
{ {
// decrypt over a temporary 64bit block // decrypt over a temporary 64bit block
lTemp = byteArrayToLong(buffer, nI); lTemp = byteArrayToLong(buffer, nI);
...@@ -1153,20 +1197,20 @@ public class Blowfish { ...@@ -1153,20 +1197,20 @@ public class Blowfish {
/** /**
* decrypts an integer buffer (should be aligned to an * decrypts an integer buffer (should be aligned to an
* two integer border) to another int buffer (of the same size or bigger) * two integer border) to another int buffer (of the same size or bigger)
*
* @param inbuffer buffer with ciphertext data * @param inbuffer buffer with ciphertext data
* @param outbuffer buffer to get the plaintext data * @param outbuffer buffer to get the plaintext data
*/ */
public void decrypt(int[] inbuffer, public void decrypt(int[] inbuffer,
int[] outbuffer) int[] outbuffer)
{ {
int nLen = inbuffer.length; int nLen = inbuffer.length;
long lTemp; long lTemp;
for (int nI = 0; nI < nLen; nI +=2) for (int nI = 0; nI < nLen; nI += 2)
{ {
// decrypt a temporary 64bit block // decrypt a temporary 64bit block
lTemp = intArrayToLong(inbuffer, nI); lTemp = intArrayToLong(inbuffer, nI);
...@@ -1179,13 +1223,14 @@ public class Blowfish { ...@@ -1179,13 +1223,14 @@ public class Blowfish {
/** /**
* decrypts an int buffer (should be aligned to a * decrypts an int buffer (should be aligned to a
* two integer border) * two integer border)
*
* @param buffer buffer to decrypt * @param buffer buffer to decrypt
*/ */
public void decrypt(int[] buffer) public void decrypt(int[] buffer)
{ {
int nLen = buffer.length; int nLen = buffer.length;
long lTemp; long lTemp;
for (int nI = 0; nI < nLen; nI +=2) for (int nI = 0; nI < nLen; nI += 2)
{ {
// decrypt a temporary 64bit block // decrypt a temporary 64bit block
lTemp = intArrayToLong(buffer, nI); lTemp = intArrayToLong(buffer, nI);
...@@ -1198,11 +1243,12 @@ public class Blowfish { ...@@ -1198,11 +1243,12 @@ public class Blowfish {
/** /**
* decrypts a long buffer to another long buffer (of the same size or bigger) * decrypts a long buffer to another long buffer (of the same size or bigger)
*
* @param inbuffer buffer with ciphertext data * @param inbuffer buffer with ciphertext data
* @param outbuffer buffer to get the plaintext data * @param outbuffer buffer to get the plaintext data
*/ */
public void decrypt(long[] inbuffer, public void decrypt(long[] inbuffer,
long[] outbuffer) long[] outbuffer)
{ {
int nLen = inbuffer.length; int nLen = inbuffer.length;
for (int nI = 0; nI < nLen; nI++) for (int nI = 0; nI < nLen; nI++)
...@@ -1215,6 +1261,7 @@ public class Blowfish { ...@@ -1215,6 +1261,7 @@ public class Blowfish {
/** /**
* decrypts a long buffer to itself * decrypts a long buffer to itself
*
* @param buffer buffer to decrypt * @param buffer buffer to decrypt
*/ */
public void decrypt(long[] buffer) public void decrypt(long[] buffer)
...@@ -1230,33 +1277,35 @@ public class Blowfish { ...@@ -1230,33 +1277,35 @@ public class Blowfish {
/** /**
* gets bytes from an array into a long * gets bytes from an array into a long
*
* @param buffer where to get the bytes * @param buffer where to get the bytes
* @param nStartIndex index from where to read the data * @param nStartIndex index from where to read the data
* @return the 64bit integer * @return the 64bit integer
*/ */
private static long byteArrayToLong(byte[] buffer, private static long byteArrayToLong(byte[] buffer,
int nStartIndex) int nStartIndex)
{ {
return (((long)buffer[nStartIndex]) << 56) | return (((long) buffer[nStartIndex]) << 56) |
(((long)buffer[nStartIndex + 1] & 0x0ffL) << 48) | (((long) buffer[nStartIndex + 1] & 0x0ffL) << 48) |
(((long)buffer[nStartIndex + 2] & 0x0ffL) << 40) | (((long) buffer[nStartIndex + 2] & 0x0ffL) << 40) |
(((long)buffer[nStartIndex + 3] & 0x0ffL) << 32) | (((long) buffer[nStartIndex + 3] & 0x0ffL) << 32) |
(((long)buffer[nStartIndex + 4] & 0x0ffL) << 24) | (((long) buffer[nStartIndex + 4] & 0x0ffL) << 24) |
(((long)buffer[nStartIndex + 5] & 0x0ffL) << 16) | (((long) buffer[nStartIndex + 5] & 0x0ffL) << 16) |
(((long)buffer[nStartIndex + 6] & 0x0ffL) << 8) | (((long) buffer[nStartIndex + 6] & 0x0ffL) << 8) |
((long)buffer[nStartIndex + 7] & 0x0ff); ((long) buffer[nStartIndex + 7] & 0x0ff);
} }
/** /**
* converts a long o bytes which are put into a given array * converts a long o bytes which are put into a given array
*
* @param lValue the 64bit integer to convert * @param lValue the 64bit integer to convert
* @param buffer the target buffer * @param buffer the target buffer
* @param nStartIndex where to place the bytes in the buffer * @param nStartIndex where to place the bytes in the buffer
*/ */
private static void longToByteArray(long lValue, private static void longToByteArray(long lValue,
byte[] buffer, byte[] buffer,
int nStartIndex) int nStartIndex)
{ {
buffer[nStartIndex] = (byte) (lValue >>> 56); buffer[nStartIndex] = (byte) (lValue >>> 56);
buffer[nStartIndex + 1] = (byte) ((lValue >>> 48) & 0x0ff); buffer[nStartIndex + 1] = (byte) ((lValue >>> 48) & 0x0ff);
...@@ -1271,12 +1320,13 @@ public class Blowfish { ...@@ -1271,12 +1320,13 @@ public class Blowfish {
/** /**
* converts values from an integer array to a long * converts values from an integer array to a long
*
* @param buffer where to get the bytes * @param buffer where to get the bytes
* @param nStartIndex index from where to read the data * @param nStartIndex index from where to read the data
* @return the 64bit integer * @return the 64bit integer
*/ */
private static long intArrayToLong(int[] buffer, private static long intArrayToLong(int[] buffer,
int nStartIndex) int nStartIndex)
{ {
return (((long) buffer[nStartIndex]) << 32) | return (((long) buffer[nStartIndex]) << 32) |
(((long) buffer[nStartIndex + 1]) & 0x0ffffffffL); (((long) buffer[nStartIndex + 1]) & 0x0ffffffffL);
...@@ -1285,66 +1335,72 @@ public class Blowfish { ...@@ -1285,66 +1335,72 @@ public class Blowfish {
/** /**
* converts a long to integers which are put into a given array * converts a long to integers which are put into a given array
*
* @param lValue the 64bit integer to convert * @param lValue the 64bit integer to convert
* @param buffer the target buffer * @param buffer the target buffer
* @param nStartIndex where to place the bytes in the buffer * @param nStartIndex where to place the bytes in the buffer
*/ */
private static void longToIntArray(long lValue, private static void longToIntArray(long lValue,
int[] buffer, int[] buffer,
int nStartIndex) int nStartIndex)
{ {
buffer[nStartIndex] = (int) (lValue >>> 32); buffer[nStartIndex] = (int) (lValue >>> 32);
buffer[nStartIndex + 1] = (int) lValue; buffer[nStartIndex + 1] = (int) lValue;
} }
/** /**
* makes a long from two integers (treated unsigned) * makes a long from two integers (treated unsigned)
*
* @param nLo lower 32bits * @param nLo lower 32bits
* @param nHi higher 32bits * @param nHi higher 32bits
* @return the built long * @return the built long
*/ */
private static long makeLong(int nLo, private static long makeLong(int nLo,
int nHi) int nHi)
{ {
return (((long)nHi << 32) | return (((long) nHi << 32) | ((long) nLo & 0x00000000ffffffffL));
((long)nLo & 0x00000000ffffffffL));
} }
/** /**
* gets the lower 32 bits of a long * gets the lower 32 bits of a long
*
* @param lVal the long integer * @param lVal the long integer
* @return lower 32 bits * @return lower 32 bits
*/ */
private static int longLo32(long lVal) private static int longLo32(long lVal)
{ {
return (int)lVal; return (int) lVal;
} }
/** /**
* gets the higher 32 bits of a long * gets the higher 32 bits of a long
*
* @param lVal the long integer * @param lVal the long integer
* @return higher 32 bits * @return higher 32 bits
*/ */
private static int longHi32(long lVal) private static int longHi32(long lVal)
{ {
return (int)((lVal >>> 32)); return (int) ((lVal >>> 32));
} }
// our table for binhex conversion // our table for binhex conversion
final static char[] HEXTAB = { '0', '1', '2', '3', '4', '5', '6', '7', final static char[] HEXTAB = {
'8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; '0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', 'a', 'b', 'c', 'd', 'e', 'f'
};
/** /**
* converts a byte array to a binhex string * converts a byte array to a binhex string
*
* @param data the byte array * @param data the byte array
* @param nStartPos start index where to get the bytes * @param nStartPos start index where to get the bytes
* @param nNumOfBytes number of bytes to convert * @param nNumOfBytes number of bytes to convert
* @return the binhex string * @return the binhex string
*/ */
private static String bytesToBinHex(byte[] data, private static String bytesToBinHex(byte[] data,
int nStartPos, int nStartPos,
int nNumOfBytes) int nNumOfBytes)
{ {
StringBuffer sbuf = new StringBuffer(); StringBuffer sbuf = new StringBuffer();
sbuf.setLength(nNumOfBytes << 1); sbuf.setLength(nNumOfBytes << 1);
...@@ -1360,19 +1416,20 @@ public class Blowfish { ...@@ -1360,19 +1416,20 @@ public class Blowfish {
/** /**
* converts a binhex string back into a byte array (invalid codes will be skipped) * converts a binhex string back into a byte array (invalid codes will be skipped)
*
* @param sBinHex binhex string * @param sBinHex binhex string
* @param data the target array * @param data the target array
* @param nSrcPos from which character in the string the conversion should begin, * @param nSrcPos from which character in the string the conversion should begin,
* remember that (nSrcPos modulo 2) should equals 0 normally * remember that (nSrcPos modulo 2) should equals 0 normally
* @param nDstPos to store the bytes from which position in the array * @param nDstPos to store the bytes from which position in the array
* @param nNumOfBytes number of bytes to extract * @param nNumOfBytes number of bytes to extract
* @return number of extracted bytes * @return number of extracted bytes
*/ */
private static int binHexToBytes(String sBinHex, private static int binHexToBytes(String sBinHex,
byte[] data, byte[] data,
int nSrcPos, int nSrcPos,
int nDstPos, int nDstPos,
int nNumOfBytes) int nNumOfBytes)
{ {
// check for correct ranges // check for correct ranges
int nStrLen = sBinHex.length(); int nStrLen = sBinHex.length();
...@@ -1402,13 +1459,13 @@ public class Blowfish { ...@@ -1402,13 +1459,13 @@ public class Blowfish {
if ((cActChar >= 'a') && (cActChar <= 'f')) if ((cActChar >= 'a') && (cActChar <= 'f'))
{ {
bActByte |= (byte)(cActChar - 'a') + 10; bActByte |= (byte) (cActChar - 'a') + 10;
} }
else else
{ {
if ((cActChar >= '0') && (cActChar <= '9')) if ((cActChar >= '0') && (cActChar <= '9'))
{ {
bActByte |= (byte)(cActChar - '0'); bActByte |= (byte) (cActChar - '0');
} }
else else
{ {
...@@ -1428,14 +1485,15 @@ public class Blowfish { ...@@ -1428,14 +1485,15 @@ public class Blowfish {
/** /**
* converts a byte array into an UNICODE string * converts a byte array into an UNICODE string
*
* @param data the byte array * @param data the byte array
* @param nStartPos where to begin the conversion * @param nStartPos where to begin the conversion
* @param nNumOfBytes number of bytes to handle * @param nNumOfBytes number of bytes to handle
* @return the string * @return the string
*/ */
private static String byteArrayToUNCString(byte[] data, private static String byteArrayToUNCString(byte[] data,
int nStartPos, int nStartPos,
int nNumOfBytes) int nNumOfBytes)
{ {
// we need two bytes for every character // we need two bytes for every character
nNumOfBytes &= ~1; nNumOfBytes &= ~1;
...@@ -1456,7 +1514,7 @@ public class Blowfish { ...@@ -1456,7 +1514,7 @@ public class Blowfish {
while (nNumOfBytes > 0) while (nNumOfBytes > 0)
{ {
sbuf.setCharAt(nSBufPos++, sbuf.setCharAt(nSBufPos++,
(char)(((int)data[nStartPos] << 8) | ((int)data[nStartPos + 1] & 0x0ff))); (char) (((int) data[nStartPos] << 8) | ((int) data[nStartPos + 1] & 0x0ff)));
nStartPos += 2; nStartPos += 2;
nNumOfBytes -= 2; nNumOfBytes -= 2;
} }
......
...@@ -7,7 +7,7 @@ public class FileUtil { ...@@ -7,7 +7,7 @@ public class FileUtil {
public static String RESOURCES_PATH = "/resources"; public static String RESOURCES_PATH = "/resources";
public static String UPLOAD_PATH = "/resources/upload"; public static String UPLOAD_PATH = "/resources/upload";
public static String DOCUMENT_TEMPLATES_PATH = "/resources/document_templates"; public static String DOCUMENT_TEMPLATES_PATH = "/resources/document_templates";
public static String getResourcesPath(HttpServletRequest request) { public static String getResourcesPath(HttpServletRequest request) {
String path = request.getSession().getServletContext().getRealPath(RESOURCES_PATH); String path = request.getSession().getServletContext().getRealPath(RESOURCES_PATH);
return path; return path;
......
package com.originspark.drp.util; package com.originspark.drp.util;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import com.originspark.drp.models.User; import com.originspark.drp.models.User;
public class SessionUtil { public class SessionUtil {
//返回当前登陆的用户信息 // 返回当前登陆的用户信息
public static User getCurrentUser(HttpServletRequest request){ public static User getCurrentUser(HttpServletRequest request) {
User user=(User) request.getSession().getAttribute("user"); User user = (User) request.getSession().getAttribute("user");
return user; return user;
} }
public static String getCurrentUserName(HttpServletRequest request){ public static String getCurrentUserName(HttpServletRequest request) {
return getCurrentUser(request).getName(); return getCurrentUser(request).getName();
} }
} }
...@@ -6,35 +6,35 @@ import java.text.SimpleDateFormat; ...@@ -6,35 +6,35 @@ import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
public class StringUtil { public class StringUtil {
static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
public static Date String2Date(String str) throws ParseException{ public static Date String2Date(String str) throws ParseException {
return sdf.parse(str); return sdf.parse(str);
} }
public static BigDecimal String2BigDecimal(String str){ public static BigDecimal String2BigDecimal(String str) {
return BigDecimal.valueOf(Double.parseDouble(str)); return BigDecimal.valueOf(Double.parseDouble(str));
} }
/** /**
* 通过年月获取上一个月的年月 * 通过年月获取上一个月的年月
* *
* @param thisMonth="2014-02"/"2014-01" * @param thisMonth="2014-02"/"2014-01"
* @return "2014-01"/"2013-12" * @return "2014-01"/"2013-12"
*/ */
public static String getPreMonth(String thisMonth){ public static String getPreMonth(String thisMonth) {
String yearMonth[] = thisMonth.split("-"); String yearMonth[] = thisMonth.split("-");
int month = Integer.parseInt(yearMonth[1]); int month = Integer.parseInt(yearMonth[1]);
if(month > 1){ if (month > 1) {
return yearMonth[0]+"-"+String.format("%02d", month-1); return yearMonth[0] + "-" + String.format("%02d", month - 1);
} }
int year = Integer.parseInt(yearMonth[0]); int year = Integer.parseInt(yearMonth[0]);
return (year-1)+"-12"; return (year - 1) + "-12";
} }
} }
...@@ -17,20 +17,20 @@ import org.apache.poi.ss.usermodel.WorkbookFactory; ...@@ -17,20 +17,20 @@ import org.apache.poi.ss.usermodel.WorkbookFactory;
import com.originspark.drp.web.models.projects.inventories.Ware; import com.originspark.drp.web.models.projects.inventories.Ware;
public class MonthendInventoryGenerator { public class MonthendInventoryGenerator {
/** /**
* 生成月末盘点表的excel * 生成月末盘点表的excel
* *
* @param fileName 文件名:项目名称_系统名称_2014-02_月末盘点 * @param fileName 文件名:项目名称_系统名称_2014-02_月末盘点
* @param inventories * @param inventories
* @param resourcePath 代指目录/WebContent/resources * @param resourcePath 代指目录/WebContent/resources
* @return * @return
*/ */
public static File generate(String fileName,List<Ware> inventories,String resourcePath){ public static File generate(String fileName, List<Ware> inventories, String resourcePath) {
try { try {
// Open excel template // Open excel template
InputStream inp = new FileInputStream(FileUtils.getFile( resourcePath + "/document_templates/monthEndInventory.xls")); InputStream inp = new FileInputStream(FileUtils.getFile(resourcePath + "/document_templates/monthEndInventory.xls"));
Workbook wb = WorkbookFactory.create(inp); Workbook wb = WorkbookFactory.create(inp);
Sheet mainSheet = wb.getSheetAt(0); Sheet mainSheet = wb.getSheetAt(0);
...@@ -44,10 +44,10 @@ public class MonthendInventoryGenerator { ...@@ -44,10 +44,10 @@ public class MonthendInventoryGenerator {
row.createCell(1, Cell.CELL_TYPE_STRING).setCellValue(inventory.getWareBrand()); row.createCell(1, Cell.CELL_TYPE_STRING).setCellValue(inventory.getWareBrand());
row.createCell(2, Cell.CELL_TYPE_STRING).setCellValue(inventory.getWareModel()); row.createCell(2, Cell.CELL_TYPE_STRING).setCellValue(inventory.getWareModel());
row.createCell(3, Cell.CELL_TYPE_STRING).setCellValue(inventory.getWareUnit()); row.createCell(3, Cell.CELL_TYPE_STRING).setCellValue(inventory.getWareUnit());
row.createCell(4, Cell.CELL_TYPE_STRING).setCellValue(inventory.getLastMonthLeft()+""); row.createCell(4, Cell.CELL_TYPE_STRING).setCellValue(inventory.getLastMonthLeft() + "");
row.createCell(5, Cell.CELL_TYPE_STRING).setCellValue(inventory.getMonthIn()+""); row.createCell(5, Cell.CELL_TYPE_STRING).setCellValue(inventory.getMonthIn() + "");
row.createCell(6, Cell.CELL_TYPE_STRING).setCellValue(inventory.getMonthOut()+""); row.createCell(6, Cell.CELL_TYPE_STRING).setCellValue(inventory.getMonthOut() + "");
row.createCell(7, Cell.CELL_TYPE_STRING).setCellValue(inventory.getMonthLeft()+""); row.createCell(7, Cell.CELL_TYPE_STRING).setCellValue(inventory.getMonthLeft() + "");
currentRow.increment(); currentRow.increment();
} }
......
package com.originspark.drp.web.models.projects;
import java.util.Date;
public class ProjectUI {
private Long id;
private String name;
private String code;
private String city;
private Date startDate;
private Date endDate;
private Long parentId;
private boolean leaf;
private Long projectManager;
private Long wareKeeper;
private Long materialKeeper;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public Date getStartDate() {
return startDate;
}
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
public Long getParentId() {
return parentId;
}
public void setParentId(Long parentId) {
this.parentId = parentId;
}
public boolean isLeaf() {
return leaf;
}
public void setLeaf(boolean leaf) {
this.leaf = leaf;
}
public Long getProjectManager() {
return projectManager;
}
public void setProjectManager(Long projectManager) {
this.projectManager = projectManager;
}
public Long getWareKeeper() {
return wareKeeper;
}
public void setWareKeeper(Long wareKeeper) {
this.wareKeeper = wareKeeper;
}
public Long getMaterialKeeper() {
return materialKeeper;
}
public void setMaterialKeeper(Long materialKeeper) {
this.materialKeeper = materialKeeper;
}
}
<?xml version="1.0"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
<persistence-unit name="default" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
<property name="hibernate.max_fetch_depth" value="3" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.jdbc.fetch_size" value="18" />
<property name="hibernate.jdbc.batch_size" value="10" />
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.format_sql" value="false" />
<property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.EhCacheRegionFactory" />
<property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy" />
<property name="net.sf.ehcache.configurationResourceName" value="ehcache-hibernate-local.xml" />
</properties>
</persistence-unit>
</persistence>
...@@ -19,23 +19,13 @@ ...@@ -19,23 +19,13 @@
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan> </context:component-scan>
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
</list>
</property>
</bean>
<!-- 数据源配置, 使用DBCP数据库连接池 --> <!-- 数据源配置, 使用DBCP数据库连接池 -->
<context:property-placeholder location="classpath:jdbc.properties"/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<!-- Connection Info -->
<property name="driverClassName" value="${jdbc.driver}"/> <property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/> <property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/> <property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/> <property name="password" value="${jdbc.password}"/>
<!-- Connection Pooling Info -->
<property name="maxActive" value="${dbcp.maxActive}"/> <property name="maxActive" value="${dbcp.maxActive}"/>
<property name="maxIdle" value="${dbcp.maxIdle}"/> <property name="maxIdle" value="${dbcp.maxIdle}"/>
<property name="defaultAutoCommit" value="false"/> <property name="defaultAutoCommit" value="false"/>
...@@ -49,15 +39,7 @@ ...@@ -49,15 +39,7 @@
<property name="dataSource" ref="dataSource"/> <property name="dataSource" ref="dataSource"/>
<property name="jpaVendorAdapter" ref="hibernateJpaVendorAdapter"/> <property name="jpaVendorAdapter" ref="hibernateJpaVendorAdapter"/>
<property name="packagesToScan" value="com.originspark.drp.models.**"/> <property name="packagesToScan" value="com.originspark.drp.models.**"/>
<property name="jpaProperties"> <property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml" />
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
<prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</prop>
<prop key="net.sf.ehcache.configurationResourceName">ehcache-hibernate-local.xml</prop>
<prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy</prop>
</props>
</property>
</bean> </bean>
<bean id="hibernateJpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"/> <bean id="hibernateJpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"/>
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ehcache> <ehcache>
<diskStore path="java.io.tmpdir/hibernate/wms" />
<diskStore path="java.io.tmpdir/hibernate/wms" /> <!-- DefaultCache setting. -->
<defaultCache maxElementsInMemory="10000" memoryStoreEvictionPolicy="LRU" eternal="false"
<!-- DefaultCache setting. --> timeToIdleSeconds="300" timeToLiveSeconds="300" overflowToDisk="false" diskPersistent="false" />
<defaultCache maxElementsInMemory="10000" memoryStoreEvictionPolicy="LRU" eternal="false"
timeToIdleSeconds="300" timeToLiveSeconds="300" overflowToDisk="false" diskPersistent="false" />
</ehcache> </ehcache>
#sql.type=h2
#jdbc h2
#jdbc.driver=org.h2.Driver
#jdbc.url=jdbc:h2:file:~/wms;AUTO_SERVER=TRUE
#jdbc.username=sa
#jdbc.password=
#hibernate.dialect=org.hibernate.dialect.H2Dialect
sql.type=mysql
jdbc.driver=com.mysql.jdbc.Driver jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/drp?useUnicode=true&characterEncoding=UTF-8 jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8
jdbc.username=root jdbc.username=root
jdbc.password= jdbc.password=
hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
#hibernate settings
hibernate.hbm2ddl.auto=update
hibernate.show_sql=true
hibernate.format_sql=true
#dbcp settings #dbcp settings
dbcp.initialSize=5 dbcp.initialSize=5
......
-- phpMyAdmin SQL Dump
-- version 4.2.7.1
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Generation Time: 2015-03-18 05:10:34
-- 服务器版本: 5.6.20
-- PHP Version: 5.5.15
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Database: `drp`
--
-- --------------------------------------------------------
--
-- 表的结构 `users`
--
CREATE TABLE IF NOT EXISTS `users` (
`id` bigint(20) NOT NULL,
`created_by` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL,
`created_on` datetime NOT NULL,
`status` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`updated_by` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL,
`updated_on` datetime NOT NULL,
`address` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`code` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`email` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`gender` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`password` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`phone` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`type` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`username` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;
-- --
-- 转存表中的数据 `users` -- 转存表中的数据 `users`
-- --
INSERT INTO `users` (`id`, `created_by`, `created_on`, `status`, `updated_by`, `updated_on`, `address`, `code`, `email`, `gender`, `name`, `password`, `phone`, `type`, `username`) VALUES INSERT INTO `users` (`id`, `created_by`, `created_on`, `status`, `updated_by`, `updated_on`, `address`, `code`, `email`, `gender`, `name`, `password`, `phone`, `type`, `username`) VALUES
(1, NULL, '2015-03-18 11:25:34', 'ACTIVE', NULL, '2015-03-18 12:10:12', '', 'admin', '', 'MALE', 'admin', '17a73b924892695ff91e16b35ce100b7c64928e43d5a170a', '1324332345', 'MANAGER', NULL); (1, NULL, '2015-03-18 11:25:34', 'ACTIVE', NULL, '2015-03-18 12:10:12', '', 'admin', '', 'MALE', 'admin', '17a73b924892695ff91e16b35ce100b7c64928e43d5a170a', '1324332345', 'MANAGER', NULL);
--
-- Indexes for dumped tables
--
--
-- Indexes for table `users`
--
ALTER TABLE `users`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `users`
--
ALTER TABLE `users`
MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=2;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
<display-name>smart-nav</display-name> version="2.5">
<context-param> <display-name>smart-nav</display-name>
<param-name>contextConfigLocation</param-name> <context-param>
<param-value>classpath*:applicationContext.xml</param-value> <param-name>contextConfigLocation</param-name>
</context-param> <param-value>classpath*:context.xml</param-value>
<listener> </context-param>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> <listener>
</listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
<filter> </listener>
<filter-name>encodingFilter</filter-name> <filter>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <filter-name>encodingFilter</filter-name>
<init-param> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<param-name>encoding</param-name> <init-param>
<param-value>UTF-8</param-value> <param-name>encoding</param-name>
</init-param> <param-value>UTF-8</param-value>
<init-param> </init-param>
<param-name>forceEncoding</param-name> <init-param>
<param-value>true</param-value> <param-name>forceEncoding</param-name>
</init-param> <param-value>true</param-value>
</filter> </init-param>
<filter-mapping> </filter>
<filter-name>encodingFilter</filter-name> <filter-mapping>
<url-pattern>/*</url-pattern> <filter-name>encodingFilter</filter-name>
</filter-mapping> <url-pattern>/*</url-pattern>
<filter> </filter-mapping>
<filter-name>openEntityManagerInViewFilter</filter-name> <filter>
<filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class> <filter-name>openEntityManagerInViewFilter</filter-name>
</filter> <filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
<filter-mapping> </filter>
<filter-name>openEntityManagerInViewFilter</filter-name> <filter-mapping>
<url-pattern>/*</url-pattern> <filter-name>openEntityManagerInViewFilter</filter-name>
</filter-mapping> <url-pattern>/*</url-pattern>
<servlet> </filter-mapping>
<servlet-name>springServlet</servlet-name> <servlet>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <servlet-name>springServlet</servlet-name>
<init-param> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<param-name>contextConfigLocation</param-name> <init-param>
<param-value>/WEB-INF/spring-mvc.xml</param-value> <param-name>contextConfigLocation</param-name>
</init-param> <param-value>/WEB-INF/spring-mvc.xml</param-value>
<load-on-startup>1</load-on-startup> </init-param>
</servlet> <load-on-startup>1</load-on-startup>
<servlet-mapping> </servlet>
<servlet-name>springServlet</servlet-name> <servlet-mapping>
<url-pattern>/</url-pattern> <servlet-name>springServlet</servlet-name>
</servlet-mapping> <url-pattern>/</url-pattern>
<session-config> </servlet-mapping>
<session-timeout>60</session-timeout> <session-config>
</session-config> <session-timeout>60</session-timeout>
<filter> </session-config>
<filter-name>HiddenHttpMethodFilter</filter-name> <filter>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> <filter-name>HiddenHttpMethodFilter</filter-name>
</filter> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
<filter-mapping> </filter>
<filter-name>HiddenHttpMethodFilter</filter-name> <filter-mapping>
<servlet-name>springServlet</servlet-name> <filter-name>HiddenHttpMethodFilter</filter-name>
</filter-mapping> <servlet-name>springServlet</servlet-name>
<error-page> </filter-mapping>
<error-code>404</error-code> <error-page>
<location>/common/error.jsp</location> <error-code>404</error-code>
</error-page> <location>/common/error.jsp</location>
<error-page> </error-page>
<error-code>400</error-code> <error-page>
<location>/common/error.jsp</location> <error-code>400</error-code>
</error-page> <location>/common/error.jsp</location>
<error-page> </error-page>
<error-code>500</error-code> <error-page>
<location>/common/500.jsp</location> <error-code>500</error-code>
</error-page> <location>/common/500.jsp</location>
<!-- 由Tomcat的defaultServlet来处理静态文件 --> </error-page>
<servlet-mapping> <!-- 由Tomcat的defaultServlet来处理静态文件 -->
<servlet-name>default</servlet-name> <servlet-mapping>
<url-pattern>*.css</url-pattern> <servlet-name>default</servlet-name>
</servlet-mapping> <url-pattern>*.css</url-pattern>
<servlet-mapping> </servlet-mapping>
<servlet-name>default</servlet-name> <servlet-mapping>
<url-pattern>*.js</url-pattern> <servlet-name>default</servlet-name>
</servlet-mapping> <url-pattern>*.js</url-pattern>
<servlet-mapping> </servlet-mapping>
<servlet-name>default</servlet-name> <servlet-mapping>
<url-pattern>*.gif</url-pattern> <servlet-name>default</servlet-name>
</servlet-mapping> <url-pattern>*.gif</url-pattern>
<servlet-mapping> </servlet-mapping>
<servlet-name>default</servlet-name> <servlet-mapping>
<url-pattern>*.png</url-pattern> <servlet-name>default</servlet-name>
</servlet-mapping> <url-pattern>*.png</url-pattern>
<servlet-mapping> </servlet-mapping>
<servlet-name>default</servlet-name> <servlet-mapping>
<url-pattern>*.jpg</url-pattern> <servlet-name>default</servlet-name>
</servlet-mapping> <url-pattern>*.jpg</url-pattern>
</servlet-mapping>
</web-app> </web-app>
\ No newline at end of file
/**
* @author allenjin
*/
Ext.define("drp.app.controller.projects.ProjectController", {
extend : "drp.app.controller.AbstractController",
projectTreePanel : null,
me : null,
init : function() {
me = this;
this.control({
'projectview' : {
afterrender : function(panel) {
projectTreePanel = panel.down('treepanel');
var store = projectTreePanel.getStore();
store.load({
node : store.getRootNode()
});
}
},
// 查询项目
'projectview button[action=searchProject]' : {
click : this.searchProject
},
// 增加项目
'projectview button[action=addProject]' : {
click : this.showCreateProjectForm
},
// 添加系统
'projectview button[action=addSystem]' : {
click : this.showCreateSystemForm
},
// 更新项目
'projectview > treepanel' : {
itemdblclick : this.showUpdateProjectOrSystemForm,
itemclick : function(tree, record, item, index, e, eOpts) {
tree.toggleOnDblClick = false;
}
},
// 删除项目
'projectview button[action=deleteProject]' : {
click : this.deleteProject
},
'projectviewform button[action=submitProjectForm]' : {
click : this.submitProjectForm
},
'projectviewform button[action=closeProjectForm]' : {
click : this.closeProjectForm
},
'systemviewform button[action=submitSystemForm]' : {
click : this.submitProjectForm
},
'systemviewform button[action=closeSystemForm]' : {
click : this.closeSystemForm
}
});
},
showCreateProjectForm : function(btn) {
var projectForm = Ext.widget("projectviewform");
AlertWin.alert('新增项目', null, projectForm, 450, 240);
},
showCreateSystemForm : function(btn){
var record = projectTreePanel.getSelectionModel().getSelection()[0];
if (!record || record.data.leaf) {
Ext.MessageBox.show({
title : "提示",
msg : "请先选择项目!",
icon : Ext.MessageBox.INFO,
buttons : Ext.Msg.OK
});
return;
}
var systemForm = Ext.widget("systemviewform");
//设置项目名称
var project = record;
systemForm.down('#projectId').setValue(project.data.id);
systemForm.down('#projectName').setValue(project.data.name);
AlertWin.alert('添加系统', null, systemForm, 450, 180);
},
showUpdateProjectOrSystemForm : function(grid, record, item, index, e, eopts) {
if (!record) {
me.showPromptsOnUpdate("数据");
return;
} else {
//如果是系统
if(record.isLeaf()){
var systemForm = Ext.widget("systemviewform");
if (!record) {
me.showPromptsOnUpdate("系统");
return;
} else {
systemForm.down('form').loadRecord(record);
//设置项目名称
var project = record.parentNode;
systemForm.down('#projectId').setValue(project.data.id);
systemForm.down('#projectName').setValue(project.data.name);
AlertWin.alert('修改系统', null, systemForm, 450, 180);
}
//如果是项目
}else{
var projectForm = Ext.widget("projectviewform");
if (!record) {
me.showPromptsOnUpdate("项目");
return;
} else {
//在弹出更新项目的form前,需要设置下面三部分内容
projectForm.down('form').loadRecord(record);
//1.设置项目经理
var projectManagerRecord = Ext.create("drp.app.model.users.ProjectManagerModel", {
id : record.data.projectManager.id,
name : record.data.projectManager.name
});
projectForm.down('#projectManager_cb').setValue(projectManagerRecord);
//2.设置库管员
var WareKeeperRecord = Ext.create("drp.app.model.users.WareKeeperModel", {
id : record.data.wareKeeper.id,
name : record.data.wareKeeper.name
});
projectForm.down('#wareKeeper_cb').setValue(WareKeeperRecord);
//3.设置材料员
var MaterialKeeperRecord = Ext.create("drp.app.model.users.MaterialKeeperModel", {
id : record.data.materialKeeper.id,
name : record.data.materialKeeper.name
});
projectForm.down('#materialKeeper_cb').setValue(MaterialKeeperRecord);
AlertWin.alert('修改项目', null, projectForm, 450, 240);
}
}
}
},
deleteProject : function(btn) {
var record = projectTreePanel.getSelectionModel().getSelection()[0];
if (!record) {
me.showPromptsOnDelete(name);
return;
} else {
Ext.MessageBox.confirm("标题", "你要删除这个项目吗?", function(btn) {
if (btn == 'yes') {
me.destroyTreeNode(record, {
success : function(records, operation) {
projectTreePanel.getSelectionModel().deselectAll();
projectTreePanel.getStore().load();
Ext.Msg.alert("成功!", operation.request.scope.reader.jsonData["message"]);
},
failure : function(records, operation) {
Ext.Msg.alert("失败!", operation.request.scope.reader.jsonData["message"]);
}
});
}
});
}
},
submitProjectForm : function(btn) {
var modelName = "drp.app.model.projects.ProjectModel";
var form = btn.up('form').getForm();
if (form.isValid()) {
var formBean = form.getValues();
var model = Ext.create(modelName, formBean);
model.set("projectManager",formBean['projectManager.id']);
model.set("wareKeeper",formBean['wareKeeper.id']);
model.set("materialKeeper",formBean['materialKeeper.id']);
me.saveModel(model, projectTreePanel);
}
},
closeProjectForm : function(btn) {
me.closeForm();
},
closeSystemForm : function(btn) {
me.closeForm();
},
searchProject : function(btn) {
var store = projectTreePanel.getStore();
store.filters.clear();
store.filter([ {
property : "name",
value : Ext.getCmp("projectName_filter").getValue()
}, {
property : "code",
value : Ext.getCmp("projectCode_filter").getValue()
}, {
property : "city",
value : Ext.getCmp("projectCity_filter").getValue()
}, {
property : "startDate",
value : Ext.getCmp("projectStartDate_filter").getValue()
}, {
property : "endDate",
value : Ext.getCmp("projectEndDate_filter").getValue()
} ]);
},
models : [ "drp.app.model.projects.ProjectModel","drp.app.model.users.ProjectManagerModel",
"drp.app.model.users.WareKeeperModel","drp.app.model.users.MaterialKeeperModel" ],
stores : [ "drp.app.store.projects.ProjectStore", "drp.app.store.users.ProjectManagerStore",
"drp.app.store.users.MaterialKeeperStore","drp.app.store.users.WareKeeperStore"],
views : [ "drp.app.view.projects.ProjectView",
"drp.app.view.projects.ProjectViewForm",
"drp.app.view.projects.SystemViewForm" ]
});
\ No newline at end of file
/**
* @author allenjin
*/
Ext.define("drp.app.model.projects.ProjectModel", {
extend : "drp.app.model.AbstractModel",
fields : [{
name : "name"// 项目名称
}, {
name : "code"// 项目编号
}, {
name : "city"//项目所在城市
}, {
name : "startDate"// 开工时间
}, {
name : "endDate"// 竣工时间
}, {
name : "projectName",
persist : false
}, {
name : 'projectManager',
type : 'auto'
}, {
name : 'wareKeeper',
type : 'auto'
}, {
name : 'materialKeeper',
type : 'auto'
}],
proxy : {
type : 'rest',
url : 'project',
reader : {
type : "json",
root : "data",
successProperty : 'success'
},
writer : {
type : "json"
},
listeners : {
exception : function(proxy, response, operation) {
Ext.MessageBox.show({
title : '错误',
msg : "数据加载错误,请尝试刷新页面",
icon : Ext.MessageBox.ERROR,
buttons : Ext.Msg.OK
});
}
}
}
});
\ No newline at end of file
Ext.define("drp.app.store.projects.ProjectDataStore", {
extend : 'drp.app.store.AbstractStore',
model : 'drp.app.model.projects.ProjectModel'
});
\ No newline at end of file
/**
* @author reed mi
*/
Ext.define("drp.app.store.projects.ProjectStore", {
extend : 'Ext.data.TreeStore',
model : 'drp.app.model.projects.ProjectModel',
defaultRootId : '',
root : {data : []}
});
\ No newline at end of file
/**
* @author allenjin
*/
Ext.define('drp.app.view.projects.ProjectView', {
extend : 'Ext.panel.Panel',
alias : 'widget.projectview',
margins : '0 0 0 0',
border : 0,
title : '<center height=40>项目列表</center>',
autoScroll : true,
closable : true,
layout : {
type : 'border'
},
initComponent : function() {
var me = this;
// var selModel = Ext.create('Ext.selection.CheckboxModel', {
// listeners : {
// selectionchange : function(sm, selections) {
// me.down('#deleteProject_btn').setDisabled(selections.length == 0);
// }
// }
// });
Ext.applyIf(me, {
items : [
// {
// xtype : 'panel',
// region : 'north',
// title : '查询',
// collapsible : true,
// items : [ {
// xtype : 'form',
// items : [{
// xtype : 'fieldcontainer',
// layout : 'column',
// items : [ {
// xtype : 'textfield',
// margin : '5 0 0 10',
// id: 'projectName_filter',
// fieldLabel : '项目名称'
// }, {
// xtype : 'textfield',
// margin : '5 0 0 15',
// id: 'projectCode_filter',
// fieldLabel : '项目编码'
// } ]
// }, {
// xtype : 'fieldcontainer',
// layout : 'column',
// items : [ {
// xtype : 'datefield',
// margin : '5 0 0 10',
// id: 'projectStartDate_filter',
// fieldLabel : '开工时间'
// }, {
// xtype : 'datefield',
// margin : '5 0 0 15',
// id: 'projectEndDate_filter',
// fieldLabel : '竣工时间'
// }, {
// xtype : 'textfield',
// margin : '5 0 0 10',
// id: 'projectCity_filter',
// fieldLabel : '城市'
// }, {
// xtype : 'button',
// margin : '5 0 0 20',
// action : 'searchProject',
// icon : 'resources/images/icons/search.png',
// text : '查询'
// } ]
// } ]
// } ]
// },
{
xtype : 'treepanel',
region : 'center',
rootVisible : false,
autoScroll : true,
columnLines : true,
rowLines : true,
// selModel : selModel,
viewConfig : {
// 防止在刷新节点后默认回到最top
preserveScrollOnRefresh : false
},
store : "drp.app.store.projects.ProjectStore",
columns : [{
xtype : 'treecolumn',
width : 200,
dataIndex : 'name',
text : '项目名称'
}, {
xtype : 'gridcolumn',
width : 100,
dataIndex : 'code',
text : '项目编号'
}, {
xtype : 'gridcolumn',
width : 100,
dataIndex : 'projectManager',
text : '项目经理',
renderer : function(value, metadata, record) {
if (record.isLeaf()) {
return "";
} else {
return value==null?"":(value.name);
}
}
}, {
xtype : 'gridcolumn',
width : 100,
dataIndex : 'wareKeeper',
text : '库管员',
renderer : function(value, metadata, record) {
if (record.isLeaf()) {
return "";
} else {
return value==null?"":(value.name);
}
}
}, {
xtype : 'gridcolumn',
width : 100,
dataIndex : 'materialKeeper',
text : '材料员',
renderer : function(value, metadata, record) {
if (record.isLeaf()) {
return "";
} else {
return value==null?"":(value.name);
}
}
}, {
xtype : 'gridcolumn',
width : 100,
dataIndex : 'city',
text : '城市'
}, {
xtype : 'gridcolumn',
width : 100,
dataIndex : 'startDate',
text : '开工时间'
}, {
xtype : 'gridcolumn',
width : 100,
dataIndex : 'endDate',
text : '竣工时间'
}, {
xtype : 'gridcolumn',
width : 140,
dataIndex : 'createOn',
text : '创建时间'
}, {
xtype : 'gridcolumn',
width : 140,
dataIndex : 'updateOn',
text : '更新时间'
}],
listeners : {
'selectionchange' : function(model, selected){
me.down('#deleteProject_btn').setDisabled(selected.length == 0);
}
},
dockedItems : [{
xtype : 'toolbar',
dock : 'top',
items : [{
xtype : 'button',
icon : 'resources/images/icons/add.png',
action : 'addProject',
text : '新增项目'
}, '-', {
xtype : 'button',
icon : 'resources/images/icons/add.png',
action : 'addSystem',
text : '新增系统'
}, '-', {
xtype : 'button',
icon : 'resources/images/icons/delete.png',
action : 'deleteProject',
itemId : "deleteProject_btn",
disabled : true,
text : '删除'
}]
}]
}]
});
me.callParent(arguments);
}
});
\ No newline at end of file
/**
* @author allenjin
*/
Ext.define("drp.app.view.projects.ProjectViewForm", {
extend : 'Ext.panel.Panel',
alias : 'widget.projectviewform',
author : '100%',
autoScroll : true,
items : [{
xtype : 'form',
items : [{
xtype : 'textfield',
hidden : true,
name : 'id'
}, {
xtype : 'textfield',
anchor : '95%',
margin : '5 0 0 5',
name : 'name',
allowBlank : false,
fieldLabel : '项目名称<font color="red">*</font>'
}, {
xtype : 'textfield',
anchor : '95%',
margin : '5 0 0 5',
name : 'code',
allowBlank : false,
fieldLabel : '项目编号<font color="red">*</font>'
}, {
xtype : 'combobox',
anchor : '90%',
margin : '5 0 0 5',
allowBlank : false,
editable : false,
itemId : 'projectManager_cb',
name : 'projectManager.id',
displayField :"name",
valueField :"id",
fieldLabel : '项目经理<font color="red">*</font>',
store : Ext.create("Ext.data.Store",{
model : 'drp.app.model.users.ProjectManagerModel',
autoLoad : false
}),
listeners : {
afterrender : function(cb){
var store = cb.getStore();
store.filters.clear();
store.filter([ {
property : "status",
value : "ACTIVE"
}]);
}
}
}, {
xtype : 'combobox',
anchor : '90%',
margin : '5 0 0 5',
allowBlank : false,
editable : false,
itemId : 'wareKeeper_cb',
name : 'wareKeeper.id',
displayField :"name",
valueField :"id",
fieldLabel : '库管员<font color="red">*</font>',
store : Ext.create("Ext.data.Store",{
model : 'drp.app.model.users.WareKeeperModel',
autoLoad : false
}),
listeners : {
afterrender : function(cb){
var store = cb.getStore();
store.filters.clear();
store.filter([ {
property : "status",
value : "ACTIVE"
}]);
}
}
}, {
xtype : 'combobox',
anchor : '90%',
margin : '5 0 0 5',
allowBlank : false,
editable : false,
itemId : 'materialKeeper_cb',
name : 'materialKeeper.id',
displayField :"name",
valueField :"id",
fieldLabel : '材料员<font color="red">*</font>',
store : Ext.create("Ext.data.Store",{
model : 'drp.app.model.users.MaterialKeeperModel',
autoLoad : false
}),
listeners : {
afterrender : function(cb){
var store = cb.getStore();
store.filters.clear();
store.filter([ {
property : "status",
value : "ACTIVE"
}]);
}
}
}, {
xtype : 'textfield',
anchor : '70%',
margin : '5 0 0 5',
name : 'city',
fieldLabel : '城市'
}, {
xtype : 'datefield',
anchor : '70%',
margin : '5 0 0 5',
name : 'startDate',
format:'Y-m-d',
editable : false,
fieldLabel : '开工时间'
},{
xtype : 'datefield',
anchor : '70%',
margin : '5 0 0 5',
name : 'endDate',
format:'Y-m-d',
editable : false,
fieldLabel : '竣工时间'
}, {
xtype : 'fieldcontainer',
height : 30,
anchor : '95%',
margin : '5 0 10 5',
style : 'text-align:center',
items : [{
xtype : 'button',
margin : '5 0 0 5',
action : 'submitProjectForm',
width: 80,
formBind : true,
text : '确认'
}, {
xtype : 'button',
margin : '5 0 0 5',
action : 'closeProjectForm',
width: 80,
text : '取消'
}]
}]
}]
});
/**
* @author reed mi
*/
Ext.define("drp.app.view.projects.SystemViewForm", {
extend : 'Ext.panel.Panel',
alias : 'widget.systemviewform',
author : '100%',
autoScroll : true,
items : [{
xtype : 'form',
items : [{
xtype : 'textfield',
hidden : true,
name : 'id'
}, {
xtype : 'textfield',
hidden : true,
itemId : 'projectId',
name : 'parentId'
}, {
xtype : 'displayfield',
margin : '5 0 0 5',
anchor : '100%',
itemId : 'projectName',
fieldLabel : '项目名称<font color="red">*</font>'
}, {
xtype : 'textfield',
anchor : '95%',
margin : '5 0 0 5',
name : 'name',
allowBlank : false,
fieldLabel : '系统名称<font color="red">*</font>'
}, {
xtype : 'textfield',
anchor : '95%',
margin : '5 0 0 5',
name : 'code',
allowBlank : false,
fieldLabel : '系统编号<font color="red">*</font>'
}, {
xtype : 'textfield',
anchor : '70%',
margin : '5 0 0 5',
name : 'city',
fieldLabel : '城市'
}, {
xtype : 'datefield',
anchor : '70%',
margin : '5 0 0 5',
name : 'startDate',
format:'Y-m-d',
editable : false,
fieldLabel : '开工时间'
},{
xtype : 'datefield',
anchor : '70%',
margin : '5 0 0 5',
name : 'endDate',
format:'Y-m-d',
editable : false,
fieldLabel : '竣工时间'
}, {
xtype : 'fieldcontainer',
height : 30,
anchor : '95%',
margin : '5 0 10 5',
style : 'text-align:center',
items : [{
xtype : 'button',
margin : '5 0 0 5',
action : 'submitSystemForm',
width: 80,
formBind : true,
text : '确认'
}, {
xtype : 'button',
margin : '5 0 0 5',
action : 'closeSystemForm',
width: 80,
text : '取消'
}]
}]
}]
});
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