Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
drp
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
drp
Commits
1c2f5184
Commit
1c2f5184
authored
Mar 24, 2015
by
reedmi
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'os/custom-for-wangli'
parents
6d66a531
f13bce6f
Changes
30
Hide whitespace changes
Inline
Side-by-side
Showing
30 changed files
with
743 additions
and
1571 deletions
+743
-1571
.gitignore
.gitignore
+1
-0
pom.xml
pom.xml
+189
-189
src/main/java/com/originspark/drp/controllers/BaseController.java
.../java/com/originspark/drp/controllers/BaseController.java
+1
-1
src/main/java/com/originspark/drp/controllers/MainController.java
.../java/com/originspark/drp/controllers/MainController.java
+4
-4
src/main/java/com/originspark/drp/controllers/ProfileController.java
...va/com/originspark/drp/controllers/ProfileController.java
+5
-5
src/main/java/com/originspark/drp/controllers/UserController.java
.../java/com/originspark/drp/controllers/UserController.java
+31
-31
src/main/java/com/originspark/drp/dao/BaseDAO.java
src/main/java/com/originspark/drp/dao/BaseDAO.java
+6
-2
src/main/java/com/originspark/drp/dao/BaseDAOSupport.java
src/main/java/com/originspark/drp/dao/BaseDAOSupport.java
+6
-6
src/main/java/com/originspark/drp/models/AbstractModel.java
src/main/java/com/originspark/drp/models/AbstractModel.java
+8
-8
src/main/java/com/originspark/drp/models/User.java
src/main/java/com/originspark/drp/models/User.java
+1
-1
src/main/java/com/originspark/drp/processor/UTF8StringBeanPostProcessor.java
...riginspark/drp/processor/UTF8StringBeanPostProcessor.java
+25
-24
src/main/java/com/originspark/drp/util/Blowfish.java
src/main/java/com/originspark/drp/util/Blowfish.java
+320
-262
src/main/java/com/originspark/drp/util/FileUtil.java
src/main/java/com/originspark/drp/util/FileUtil.java
+1
-1
src/main/java/com/originspark/drp/util/SessionUtil.java
src/main/java/com/originspark/drp/util/SessionUtil.java
+5
-4
src/main/java/com/originspark/drp/util/StringUtil.java
src/main/java/com/originspark/drp/util/StringUtil.java
+14
-14
src/main/java/com/originspark/drp/util/poi/exporter/MonthendInventoryGenerator.java
...ark/drp/util/poi/exporter/MonthendInventoryGenerator.java
+9
-9
src/main/java/com/originspark/drp/web/models/projects/ProjectUI.java
...va/com/originspark/drp/web/models/projects/ProjectUI.java
+0
-87
src/main/resources/META-INF/persistence.xml
src/main/resources/META-INF/persistence.xml
+19
-0
src/main/resources/context.xml
src/main/resources/context.xml
+2
-20
src/main/resources/ehcache-hibernate-local.xml
src/main/resources/ehcache-hibernate-local.xml
+4
-7
src/main/resources/jdbc.properties
src/main/resources/jdbc.properties
+1
-17
src/main/resources/sql/users.sql
src/main/resources/sql/users.sql
+0
-69
src/main/webapp/WEB-INF/web.xml
src/main/webapp/WEB-INF/web.xml
+91
-90
src/main/webapp/drp/app/controller/projects/ProjectController.js
...n/webapp/drp/app/controller/projects/ProjectController.js
+0
-229
src/main/webapp/drp/app/model/projects/ProjectModel.js
src/main/webapp/drp/app/model/projects/ProjectModel.js
+0
-51
src/main/webapp/drp/app/store/projects/ProjectDataStore.js
src/main/webapp/drp/app/store/projects/ProjectDataStore.js
+0
-4
src/main/webapp/drp/app/store/projects/ProjectStore.js
src/main/webapp/drp/app/store/projects/ProjectStore.js
+0
-9
src/main/webapp/drp/app/view/projects/ProjectView.js
src/main/webapp/drp/app/view/projects/ProjectView.js
+0
-195
src/main/webapp/drp/app/view/projects/ProjectViewForm.js
src/main/webapp/drp/app/view/projects/ProjectViewForm.js
+0
-148
src/main/webapp/drp/app/view/projects/SystemViewForm.js
src/main/webapp/drp/app/view/projects/SystemViewForm.js
+0
-84
No files found.
.gitignore
View file @
1c2f5184
...
@@ -5,3 +5,4 @@
...
@@ -5,3 +5,4 @@
.settings
.settings
/filters/dev
/filters/dev
upload/
upload/
.springBeans
pom.xml
View file @
1c2f5184
<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>
src/main/java/com/originspark/drp/controllers/BaseController.java
View file @
1c2f5184
...
@@ -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的返回值
...
...
src/main/java/com/originspark/drp/controllers/MainController.java
View file @
1c2f5184
...
@@ -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"
;
}
}
}
}
src/main/java/com/originspark/drp/controllers/ProfileController.java
View file @
1c2f5184
...
@@ -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
(
"密码修改成功"
);
}
}
...
...
src/main/java/com/originspark/drp/controllers/UserController.java
View file @
1c2f5184
...
@@ -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
);
...
...
src/main/java/com/originspark/drp/dao/BaseDAO.java
View file @
1c2f5184
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
);
}
}
src/main/java/com/originspark/drp/dao/BaseDAOSupport.java
View file @
1c2f5184
...
@@ -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
);
}
}
...
...
src/main/java/com/originspark/drp/models/AbstractModel.java
View file @
1c2f5184
...
@@ -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
src/main/java/com/originspark/drp/models/User.java
View file @
1c2f5184
...
@@ -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
)
...
...
src/main/java/com/originspark/drp/processor/UTF8StringBeanPostProcessor.java
View file @
1c2f5184
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
src/main/java/com/originspark/drp/util/Blowfish.java
View file @
1c2f5184
...
@@ -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
&
0x0ffffffff
L
);
m_pbox
[
nI
+
1
]
=
(
int
)
(
lZero
&
0x0ffffffff
L
);
}
}
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
&
0x0ffffffff
L
);
m_sbox1
[
nI
+
1
]
=
(
int
)
(
lZero
&
0x0ffffffff
L
);
}
}
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
&
0x0ffffffff
L
);
m_sbox2
[
nI
+
1
]
=
(
int
)
(
lZero
&
0x0ffffffff
L
);
}
}
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
&
0x0ffffffff
L
);
m_sbox3
[
nI
+
1
]
=
(
int
)
(
lZero
&
0x0ffffffff
L
);
}
}
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
&
0x0ffffffff
L
);
m_sbox4
[
nI
+
1
]
=
(
int
)
(
lZero
&
0x0ffffffff
L
);
}
}
}
}
...
@@ -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
]
&
0x0ff
L
)
<<
48
)
|
(((
long
)
buffer
[
nStartIndex
+
1
]
&
0x0ff
L
)
<<
48
)
|
(((
long
)
buffer
[
nStartIndex
+
2
]
&
0x0ff
L
)
<<
40
)
|
(((
long
)
buffer
[
nStartIndex
+
2
]
&
0x0ff
L
)
<<
40
)
|
(((
long
)
buffer
[
nStartIndex
+
3
]
&
0x0ff
L
)
<<
32
)
|
(((
long
)
buffer
[
nStartIndex
+
3
]
&
0x0ff
L
)
<<
32
)
|
(((
long
)
buffer
[
nStartIndex
+
4
]
&
0x0ff
L
)
<<
24
)
|
(((
long
)
buffer
[
nStartIndex
+
4
]
&
0x0ff
L
)
<<
24
)
|
(((
long
)
buffer
[
nStartIndex
+
5
]
&
0x0ff
L
)
<<
16
)
|
(((
long
)
buffer
[
nStartIndex
+
5
]
&
0x0ff
L
)
<<
16
)
|
(((
long
)
buffer
[
nStartIndex
+
6
]
&
0x0ff
L
)
<<
8
)
|
(((
long
)
buffer
[
nStartIndex
+
6
]
&
0x0ff
L
)
<<
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
])
&
0x0ffffffff
L
);
(((
long
)
buffer
[
nStartIndex
+
1
])
&
0x0ffffffff
L
);
...
@@ -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
&
0x00000000ffffffff
L
));
((
long
)
nLo
&
0x00000000ffffffff
L
));
}
}
/**
/**
* 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
;
}
}
...
...
src/main/java/com/originspark/drp/util/FileUtil.java
View file @
1c2f5184
...
@@ -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
;
...
...
src/main/java/com/originspark/drp/util/SessionUtil.java
View file @
1c2f5184
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
();
}
}
}
}
src/main/java/com/originspark/drp/util/StringUtil.java
View file @
1c2f5184
...
@@ -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"
;
}
}
}
}
src/main/java/com/originspark/drp/util/poi/exporter/MonthendInventoryGenerator.java
View file @
1c2f5184
...
@@ -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
();
}
}
...
...
src/main/java/com/originspark/drp/web/models/projects/ProjectUI.java
deleted
100644 → 0
View file @
6d66a531
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
;
}
}
src/main/resources/META-INF/persistence.xml
0 → 100644
View file @
1c2f5184
<?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>
src/main/resources/
applicationC
ontext.xml
→
src/main/resources/
c
ontext.xml
View file @
1c2f5184
...
@@ -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"
/>
...
...
src/main/resources/ehcache-hibernate-local.xml
View file @
1c2f5184
<?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>
src/main/resources/jdbc.properties
View file @
1c2f5184
#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&
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
...
...
src/main/resources/sql/users.sql
View file @
1c2f5184
-- 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 */
;
src/main/webapp/WEB-INF/web.xml
View file @
1c2f5184
<?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
src/main/webapp/drp/app/controller/projects/ProjectController.js
deleted
100644 → 0
View file @
6d66a531
/**
* @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
src/main/webapp/drp/app/model/projects/ProjectModel.js
deleted
100644 → 0
View file @
6d66a531
/**
* @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
src/main/webapp/drp/app/store/projects/ProjectDataStore.js
deleted
100644 → 0
View file @
6d66a531
Ext
.
define
(
"
drp.app.store.projects.ProjectDataStore
"
,
{
extend
:
'
drp.app.store.AbstractStore
'
,
model
:
'
drp.app.model.projects.ProjectModel
'
});
\ No newline at end of file
src/main/webapp/drp/app/store/projects/ProjectStore.js
deleted
100644 → 0
View file @
6d66a531
/**
* @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
src/main/webapp/drp/app/view/projects/ProjectView.js
deleted
100644 → 0
View file @
6d66a531
/**
* @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
src/main/webapp/drp/app/view/projects/ProjectViewForm.js
deleted
100644 → 0
View file @
6d66a531
/**
* @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
:
'
取消
'
}]
}]
}]
});
src/main/webapp/drp/app/view/projects/SystemViewForm.js
deleted
100644 → 0
View file @
6d66a531
/**
* @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
:
'
取消
'
}]
}]
}]
});
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment