package com.itth.ttraq;
import com.itth.commons.hibernate.DatabaseException;
import com.itth.commons.hibernate.HBN;
import com.itth.ttraq.actionforms.TimeStampForm;
import com.itth.ttraq.actionforms.TimeStampFormExport;
import com.itth.ttraq.actionforms.TimeStampsForm;
import com.itth.ttraq.beans.*;
import com.itth.ttraq.exceptions.NoProjectsException;
import com.itth.ttraq.exceptions.NoTimeStampsException;
import com.itth.ttraq.exceptions.UnprivilegedAccessException;
import com.itth.ttraq.om.*;
import net.sf.hibernate.*;
import net.sf.hibernate.expression.Order;
import org.apache.struts.Globals;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.text.ParseException;
import java.util.*;
/**
* 工具类
*/
public class RefreshUtils {
// 声明一个类变量
User user;
// 声明一个Session变量
Session hibernateSession;
/**
* 用来得到描述基本用户信息
*/
public static void populateParameters(HttpServletRequest req,
ActionMessages messages, ActionMessages errors,
Session hibernateSession, User user) throws DatabaseException,
NoProjectsException, UnprivilegedAccessException {
// 获取session实例
HttpSession session = req.getSession();
User userLogin = user.getUserLogin();
User userView = user;
Project projectById = null;
Project project = null;
try {
// 如果用户已经被分配项目则加载projectById
if (!user.getUserDataBean().getProjectId().equals(""))
projectById = (Project) HBN.getOM(Project.class, user
.getUserDataBean().getProjectId(), hibernateSession);
// 如果当前查看的用户已经分配项目,则把项目保存到project中否则将登录时用户的项目保存到project中
project = user.getUserDataBean().getProjectId() != null
&& projectById != null ? projectById : RefreshUtils
.getDefaultProject(userLogin, hibernateSession);
} catch (DatabaseException e) {
TTraqService.logger.warn(e);
if (!user.isSuperuser()) {
// 如果不是管理员则给出相应的提示信息
errors.add(Globals.ERROR_KEY, new ActionMessage(
"error.no.projects.available"));
}
}
Set projects = new TreeSet();
if (userLogin.isSuperuser()) {
// 如果登录用户为管理员可以查看所有的用户信息
userView = user;
if (project != null && !userView.isAssignedTo(project)) {
Set users = project.getUsers();
// 如果项目还没有被分配出去,查看登录者的项目信息
if (users.isEmpty()) {
// 保存项目名称
String oldProjectName = project.getName();
// 查看登录者的项目信息
project = getDefaultProject(userLogin, hibernateSession);
if (project == null) {
project = getDefaultProject(userLogin, hibernateSession);
// 如果登录者依然没有项目则抛出没有项目信息的异常,否则显示被查看对象变更的信息
if (project == null)
throw new NoProjectsException();
} else {
users = project.getUsers();
messages.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("hint.project.changed",
oldProjectName, project.getName()));
}
}
// 保存被查看对象的信息
String oldName = userView.getFullName();
User newViewUser = users.contains(userView) ? userView
: (User) users.iterator().next();
String newName = newViewUser.getFullName();
// 用户改变时给出提示信息
if (!userView.equals(newViewUser)) {
messages.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("hint.viewuser.changed", oldName,
newName, project.getName()));
userView = newViewUser;
}
}
populateManagerParameterBean(req, userView, project, true);
} else if (userLogin.isManagerInProject(project)) {
userView = (User) HBN.getOM(User.class, user.getUserDataBean()
.getId(), hibernateSession);
// 项目经理只能看到他所管理的项目
if (!userView.isAssignedTo(project)) {
throw new UnprivilegedAccessException(userLogin, userView);
}
populateManagerParameterBean(req, userView, project, false);
} else {
if (userLogin.getId() != user.getUserDataBean().getId()) {
throw new UnprivilegedAccessException(userLogin, userView);
} else {
// 持久化加载
userView = (User) HBN.getOM(User.class, user.getUserDataBean()
.getId(), hibernateSession);
}
}
// 把项目保存到集合中
projects.addAll(getProjects(true, userLogin.isSuperuser(),
hibernateSession, userLogin));
List filteredTimeStamps = null;
ParameterBean bean = ParameterBean.createParameterBean(session);
if (project != null) {
Set subProjects = new TreeSet();
//添加子项目
subProjects.add(project);
Project.getChildren(subProjects, project, true);
HashMap hashMap = new HashMap(2);
hashMap.put("user", user);
hashMap.put("project", subProjects);
List timeFilters = findTimefilters(HBN.getOMList(TimeStamp.class,
Order.asc(user.getUserDataBean().getOrderBy()), null,
hashMap, null, hibernateSession));
// 得到时间列表
String currentTimeFilter = checkTimefilter(user.getUserDataBean()
.getTimeFilter(), timeFilters);
filteredTimeStamps = project.getTimeStampsOrderedBy(user
.getUserDataBean().getOrderBy(), userView,
currentTimeFilter, user.getUserDataBean().getQuery(),
hibernateSession);
String summaryView = calculateSummaryHours(filteredTimeStamps);
bean.setSelectableTimefilter(timeFilters);
user.getUserDataBean().setTimeFilter(currentTimeFilter);
if (timeFilters.size() > 1
&& (!timeFilters.contains(user.getUserDataBean()
.getTimeFilter()) || user.getUserDataBean()
.getTimeFilter().equals(""))) {
user.getUserDataBean().setTimeFilter(
(String) timeFilters.get(1));
}
bean.setSummary(summaryView);
TimeStampsForm editTimeStampsForm = new TimeStampsForm();
Vector vector = new Vector(filteredTimeStamps.size());
for (int i = 0; i < filteredTimeStamps.size(); i++) {
TimeStamp timeStamp = (TimeStamp) filteredTimeStamps.get(i);
vector.add(TimeStampForm.createTimeStampForm(timeStamp));
}
editTimeStampsForm.setTimeStampForms(vector);
session.setAttribute("editTimeStampsForm", editTimeStampsForm);
user.getUserDataBean().setProjectId(project.getId());
}
bean.setFortune(Fortune.randomFortune());
populateProjectListBean(session, projects);
session.setAttribute("parameterBean", bean);
user.getUserDataBean().setId(userView.getId());
}
/**
* 得到登录用户的项目
*/
public static Project getDefaultProject(User user, Session hibernateSession)
throws DatabaseException, NoProjectsException {
Set projects = user.getProjects();
if (projects != null && projects.size() > 0) {
return (Project) projects.iterator().next();
} else {
if (user.isSuperuser()) {
List users = getAllUsers(hibernateSession);
for (Iterator iterator = users.iterator(); iterator.hasNext();) {
User user1 = (User) iterator.next();
if (user1.getProjects() != null
&& user1.getProjects().size() > 0) {
return (Project) user1.getProjects().iterator().next();
}
}
}
throw new NoProjectsException();
}
}
/**
* 设置初始化显示的都是所有时间段的信息
*/
private static String checkTimefilter(String currentTimeFilter,
List timeFilters) {
if (!timeFilters.contains(currentTimeFilter)) {
if (timeFilters.size() > 1) {
currentTimeFilter = (String) timeFilters.get(1);
} else {
Calendar now = Calendar.getInstance();
now.setTimeInMillis(System.currentTimeMillis());
currentTimeFilter = TTraqService
.formatTimefilter(now.getTime());
}
}
return currentTimeFilter;
}
private static String calculateSummaryHours(List timestamps) {
long summary = 0;
summary = calculateSummary(timestamps, summary);
return calculateHours(summary);
}
/**
* 转换时间
*/
private static String calculateHours(long milliseconds) {
long hours = milliseconds / 3600000;
long minutes = (milliseconds - (hours * 3600000)) / 60000;
St
没有合适的资源?快使用搜索试试~ 我知道了~
项目进度跟踪管理系统代码
共443个文件
class:130个
java:58个
ddl:57个
4星 · 超过85%的资源 需积分: 46 108 下载量 173 浏览量
2017-12-27
13:47:41
上传
评论 8
收藏 11.99MB RAR 举报
温馨提示
项目进度跟踪管理系统,项目管理是一项复杂的工程,尤其是对于一些中小企业,没有科学的管理手段很难实现对项目有效的管理。而项目跟踪管理系统(PTS),将可以提高企业管理的科学化水平和信息化水平,从而可以达到对项目的科学有效的管理。
资源推荐
资源详情
资源评论
收起资源包目录
项目进度跟踪管理系统代码 (443个子文件)
make.bat 98B
make.bat 98B
make.bat 98B
RefreshUtils.class 23KB
RefreshUtils.class 23KB
TimeStampForm.class 15KB
TimeStampForm.class 15KB
TTraqService.class 13KB
TTraqService.class 13KB
SetupAction.class 11KB
SetupAction.class 11KB
EditTimeStampAction.class 9KB
EditTimeStampAction.class 9KB
Project.class 9KB
Project.class 9KB
TimeStamp.class 8KB
TimeStamp.class 8KB
User.class 7KB
User.class 7KB
ExportAction.class 6KB
ExportAction.class 6KB
LogonAction$1.class 6KB
LogonAction$1.class 6KB
SessionAction$1.class 5KB
SessionAction$1.class 5KB
AdminProjectsAction.class 5KB
AdminProjectsAction.class 5KB
TTraqServlet.class 5KB
TTraqServlet.class 5KB
AdminTypeAction.class 5KB
AdminTypeAction.class 5KB
SelectTimeStampAction.class 4KB
SelectTimeStampAction.class 4KB
ExportBean.class 4KB
ExportBean.class 4KB
AddUserAction.class 4KB
AddUserAction.class 4KB
AdminStatusAction.class 4KB
AdminStatusAction.class 4KB
AddAssignmentAction.class 4KB
AddAssignmentAction.class 4KB
EditUserSettingsAction.class 4KB
EditUserSettingsAction.class 4KB
AdminAction.class 4KB
AdminAction.class 4KB
LogonAction.class 4KB
LogonAction.class 4KB
SessionAction.class 4KB
SessionAction.class 4KB
LogonCheckFilter.class 4KB
LogonCheckFilter.class 4KB
DeleteAssignmentAction.class 4KB
DeleteAssignmentAction.class 4KB
AdminUserAction.class 4KB
AdminUserAction.class 4KB
CreateTimeStampAction.class 3KB
CreateTimeStampAction.class 3KB
DeleteTimeStampAction.class 3KB
DeleteTimeStampAction.class 3KB
EditTimeStampsAction.class 3KB
EditTimeStampsAction.class 3KB
Assignment.class 3KB
Assignment.class 3KB
Type.class 3KB
Type.class 3KB
ProjectBean.class 3KB
ProjectBean.class 3KB
SelectProjectAction.class 3KB
SelectProjectAction.class 3KB
ParameterBean.class 2KB
ParameterBean.class 2KB
NoProjectsAction.class 2KB
NoProjectsAction.class 2KB
SessionAdminAction.class 2KB
SessionAdminAction.class 2KB
UserDataBean.class 2KB
UserDataBean.class 2KB
MainAction.class 2KB
MainAction.class 2KB
Status.class 2KB
Status.class 2KB
LogoutAction.class 2KB
LogoutAction.class 2KB
Fortune.class 2KB
Fortune.class 2KB
ViewUserSettingsAction.class 2KB
ViewUserSettingsAction.class 2KB
StatusBean.class 2KB
StatusBean.class 2KB
TTraqPreferences.class 1KB
TTraqPreferences.class 1KB
LogonDataBean.class 1KB
LogonDataBean.class 1KB
TimeStampsForm.class 1KB
TimeStampsForm.class 1KB
ManagerParameterBean.class 1KB
ManagerParameterBean.class 1KB
TypeBean.class 1KB
TypeBean.class 1KB
ProjectComparator.class 1KB
共 443 条
- 1
- 2
- 3
- 4
- 5
资源评论
- phoede2018-04-10是代码????
- 小马过河哥2023-04-27一个基于struts的eclipse工程,除了用户管理等基本功能外,没有太多业务功能,价值不大。
kuileo
- 粉丝: 3
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功