/*
* codjo.net
*
* Common Apache License 2.0
*/
package net.codjo.dataprocess.common.userparam;
import net.codjo.dataprocess.common.Log;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
*
*/
public class User {
private String userName;
private String currentRepository;
private List<Repository> repositoryList = new ArrayList<Repository>();
public User() {
}
public User(String userName) {
this.userName = userName;
}
public String getUserName() {
return userName;
}
public void setUserName(String name) {
userName = name;
}
public List<Repository> getRepositoryList() {
return repositoryList;
}
public List<Repository> getValidRepositoryList() {
List<Repository> list = new ArrayList<Repository>();
for (Repository repository : repositoryList) {
if (repository.isValid()) {
list.add(repository);
}
}
return list;
}
public List<Repository> getNotValidRepositoryList() {
List<Repository> list = new ArrayList<Repository>();
for (Repository repository : repositoryList) {
if (!repository.isValid()) {
list.add(repository);
}
}
return list;
}
public void addRepository(Repository repository) {
if (getRepository(repository.getName()) == null) {
repositoryList.add(repository);
}
}
public Repository getRepository(String repositoryName) {
for (Repository repository : repositoryList) {
if (repository.name.equals(repositoryName)) {
return repository;
}
}
return null;
}
public void removeRepository(Repository repository) {
repositoryList.remove(repository);
}
public void removeRepository(String repositoryName) {
for (Repository repository : repositoryList) {
if (repository.name.equals(repositoryName)) {
removeRepository(repository);
break;
}
}
}
public boolean setDefaultRepository() {
String currentRepositoryName = getCurrentRepository();
if (currentRepositoryName == null || getRepository(currentRepositoryName) == null ||
!getRepository(currentRepositoryName).isValid()) {
for (Repository repository : repositoryList) {
if (repository.isValid()) {
setCurrentRepository(repository.getName());
if (Log.isInfoEnabled()) {
Log.info(getClass(), getUserName()
+ " n'a pas de r�f�rentiel de traitement courant ou bien il n'est plus valide."
+ " Il a donc �t� fix� par d�faut � " + repository.getName());
}
return true;
}
}
setCurrentRepository(null);
return true;
}
return false;
}
public void removeAllRepository() {
repositoryList.clear();
}
public String getCurrentRepository() {
return currentRepository;
}
public void setCurrentRepository(String currentRepository) {
this.currentRepository = currentRepository;
}
@Override
public String toString() {
return "userName = " + userName + ", currentRepository = " + currentRepository + ", repositoryList = "
+ repositoryList.toString();
}
public static class Repository {
private String name;
private String expirydate;
private String expiryday;
public Repository(String name) {
this.name = name;
expirydate = "";
expiryday = "";
}
public Repository(String name, String expirydate) {
this.name = name;
this.expirydate = expirydate;
this.expiryday = "";
}
public Repository(String name, String expirydate, String expiryday) {
this.name = name;
this.expirydate = expirydate;
this.expiryday = expiryday;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setExpirydate(String expirydate) {
this.expirydate = expirydate;
}
public void setExpiryday(String expiryday) {
this.expiryday = expiryday;
}
public String getExpirydate() {
return expirydate;
}
public String getExpiryday() {
return expiryday;
}
public void updateExpirydate() {
if (expiryday == null || expiryday.trim().length() == 0) {
return;
}
int nbDay = Integer.parseInt(expiryday);
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, nbDay);
setExpirydate(new SimpleDateFormat("dd-MM-yyyy").format(cal.getTime()));
}
public boolean isValid() {
Date now = Calendar.getInstance().getTime();
if (getExpirydate() == null || getExpirydate().trim().length() == 0) {
return true;
}
Date expiryDate;
try {
expiryDate = new SimpleDateFormat("dd-MM-yyyy").parse(getExpirydate().trim());
}
catch (ParseException ex) {
try {
expiryDate = new SimpleDateFormat("dd/MM/yyyy").parse(getExpirydate().trim());
}
catch (ParseException e1) {
Log.error(getClass(),
String.format("Le format de la date d'expiration '%s' est erron�.\n"
+ "Le format doit �tre dd-MM-yyyy ou dd/MM/yyyy", expirydate),
e1);
return false;
}
}
return now.compareTo(expiryDate) < 0;
}
@Override
public String toString() {
return "[name = " + name + ", expirydate = " + expirydate + ", expiryday = " + expiryday + "]";
}
}
}