package com.oa.action;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.oa.model.Organization;
import com.oa.model.PerformanceExamine;
import com.oa.model.Person;
import com.oa.model.PersonPosition;
import com.oa.model.PersonType;
import com.oa.model.Users;
import com.oa.service.PersonService;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import java.io.*;
public class PersonAction extends ActionSupport {
private Person person;
private Users user;
private PersonService personService;
private int index;
private String returns;
private Integer type;
private Integer position;
private Integer org;
public String edit(){
System.out.println(person.getId());
Person temPerson=personService.getPerson(person.getId());
ServletActionContext.getRequest().setAttribute("person", temPerson);
System.out.println(temPerson.toString());
return "edit";
}
public String addUser() {
if (person.getId() == null) {
autoConvertToAge();
HttpSession session = ServletActionContext.getRequest().getSession();
Organization getOrg = ((List<Organization>)session.getAttribute("listOrg")).get(org);
PersonType getPT = ((List<PersonType>)session.getAttribute("listPT")).get(type);
PersonPosition getPP = ((List<PersonPosition>)session.getAttribute("listPP")).get(position);
System.out.println("birthday is "+person.getBirthday());
person.setOrganization(getOrg);
person.setPersonPosition(getPP);
person.setPersonType(getPT);
//获取磁盘中的项目路径,在项目中创建photo文件夹
String oppositeRoot = ServletActionContext.getRequest().getSession().getServletContext().getRealPath("/");
System.out.println("xiangdui is "+oppositeRoot);
File folder = new File(oppositeRoot+"photo");
if(!folder.exists()) {
boolean createSuccess = folder.mkdirs();
if(createSuccess) {
System.out.println("wenjian usccess");
} else {
System.out.println("wenjian failure");
}
}
File[] allFiles = folder.listFiles();
List files = new ArrayList();
for(int i=0; i<allFiles.length; i++) {
if(allFiles[i].isFile()) {
files.add(allFiles[i]);
}
}
String photoName = "";
for(int i=0; i<files.size(); i++) {
photoName = ((File)files.get(i)).getName();
}
System.out.println("photoname is "+photoName);
//在数据库中存(http://)路径
String path = ServletActionContext.getRequest().getContextPath();
String basePath = ServletActionContext.getRequest().getScheme()+"://"+ServletActionContext.getRequest().getServerName()+":"+ServletActionContext.getRequest().getServerPort()+path+"/"+"photo"+"/";
System.out.println("basePath is "+basePath);
person.setPhotoPath(basePath+photoName);
Serializable flag = personService.addPerson(person);
returns="JSP/yuangong.jsp";
return flag == null ? "operator_failure" : "operator_success";
} else {
System.out.println("update person");
returns="PersonAction!personList";
autoConvertToAge();
HttpSession session=ServletActionContext.getRequest().getSession();
System.out.println(" org is null type is null position is null"+org+" "+ " type "+type +" position "+position);
Organization getOrg=((List<Organization>)session.getAttribute("listOrg")).get(org);
PersonType getPT=((List<PersonType>)session.getAttribute("listPT")).get(type);
PersonPosition getPP = ((List<PersonPosition>)session.getAttribute("listPP")).get(position);
System.out.println("org name is "+getOrg.getId());
person.setOrganization(getOrg);
person.setPersonPosition(getPP);
person.setPersonType(getPT);
personService.updatePerson(person);
}
return "operator_success";
}
private void autoConvertToAge() {
Date now =new Date ();
Long nowTime=now.getTime();
Long birthtime=person.getBirthday().getTime();
Long difference=nowTime-birthtime;
Long differenceDay=difference/(1000*60*60*34);
person.setAge((int) (differenceDay/365+1));
}
public String personList(){
System.out.println("index + ===="+index);
personService.getSeletsValue();
String hql = "";
List<Person> persons = personService.getPagePersons((index==0 ? 1 : index), Person.class, hql);
int total = personService.getAllPersons(Person.class, hql).size();
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("listObject", persons);
request.setAttribute("currentIndex", (index==0 ? 1 : index ));
request.setAttribute("totalSize",total);
request.setAttribute("url", "PersonAction!personList");
return SUCCESS;
}
public String deletePerson(){
returns = "PersonAction!personList";
System.out.println("deleteperson");
if(person != null&& person.getId() != null) {
person = personService.getPerson(person.getId());
Users user = personService.getUser("from Users u where u.personid = ?", new Object[]{person});
List<PerformanceExamine> listPE = personService.getPerFormanceExamine("from PerformanceExamine pe where pe.personId = "+person.getId());
Integer id[] = new Integer[listPE.size()];
for(int i = 0; i < listPE.size(); i++) {
id[i] = listPE.get(i).getId();
}
System.out.println("user is ---------"+user);
if(user != null)
personService.deleteUser(user);
if(id.length != 0)
personService.deletePEs(id);
personService.deletePerson(person);
} else {
HttpServletRequest request = ServletActionContext.getRequest();
String []ids = request.getParameterValues("delid");
for (int i = 0; i < ids.length; i++) {
System.out.println(ids[i]);
}
if(ids.length != 0){
personService.deleteUsers(ids);
personService.deletePEs(ids);
personService.deletePersons(ids);
}
}
return "operator_success";
}
public String showListToAdd() {
return "showListToAdd";
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
public PersonService getPersonService() {
return personService;
}
@Resource
public void setPersonService(PersonService personService) {
this.personService = personService;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
public Users getUser() {
return user;
}
public void setUser(Users user) {
this.user = user;
}
public String getReturns() {
return returns;
}
public void setReturns(String returns) {
this.returns = returns;
}
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
public Integer getPosition() {
return position;
}
public void setPosition(Integer position) {
this.position = position;
}
public Integer getOrg() {
return org;
}
public void setOrg(Integer org) {
this.org = org;
}
}