publicLong getCreationCounter() {
String attributeNameCreationCounter= "CreationCounter";
Long attributeValueCreationCounter= 0L;boolean containsCreationCounter = false;
String attributeNameExpirationDateTime= "ExpirationDateTime";
Long attributeValueExpirationDateTime= 0L;boolean containsExpirationDateTime = false;
Enumeration attributeNames =ContextUtil.servletContext.getAttributeNames();while(attributeNames.hasMoreElements())
{
String name=attributeNames.nextElement();if(!containsCreationCounter &&name.equals(attributeNameCreationCounter)){
containsCreationCounter= true;
}if(!containsExpirationDateTime &&name.equals(attributeNameExpirationDateTime)){
containsExpirationDateTime= true;
}if(containsCreationCounter &&containsExpirationDateTime){break;
}
}boolean isExpired = false;if(containsExpirationDateTime){//包含超期时间
Object attributeValueExpirationDateTimeObj =ContextUtil.servletContext.getAttribute(attributeNameExpirationDateTime);if(attributeValueExpirationDateTimeObj == null || attributeValueExpirationDateTimeObj.equals("")){//超期时间为空
isExpired = true;
}else{//超期时间非空
attributeValueExpirationDateTime =(Long)ContextUtil.servletContext.getAttribute(attributeNameExpirationDateTime);
Long nowDateTime= (newDate()).getTime();if(nowDateTime < attributeValueExpirationDateTime ){//当前时间小于超期时间,未超期
isExpired = false;
}else{//已超期
isExpired = true;
}
}
}else{//不含超期时间
isExpired = true;
}if (isExpired) {//已超期
attributeValueCreationCounter =getCreationCounter(attributeNameCreationCounter);
getExpirationDateTimeNew(attributeNameExpirationDateTime);
}else {//未超期
if(containsCreationCounter){//包含计数器
Object attributeValueCreationCounterObj =ContextUtil.servletContext.getAttribute(attributeNameCreationCounter);if(attributeValueCreationCounterObj == null || attributeValueCreationCounterObj.equals("")){//计数器为空
attributeValueCreationCounter =getCreationCounter(attributeNameCreationCounter);
}else{//计数器非空
attributeValueCreationCounter =(Long)ContextUtil.servletContext.getAttribute(attributeNameCreationCounter);
}
}else {//不含计数器
attributeValueCreationCounter =getCreationCounter(attributeNameCreationCounter);
}
}returnattributeValueCreationCounter;
}//生成新的超期时间,并存入上下文。
private voidgetExpirationDateTimeNew(String attributeNameExpirationDateTime) {
Long attributeValueExpirationDateTime= 0L;
Date date= newDate();
Calendar calendar=Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_MONTH,1);//增加1天
attributeValueExpirationDateTime=calendar.getTime().getTime();
ContextUtil.servletContext.setAttribute(attributeNameExpirationDateTime, attributeValueExpirationDateTime);
}//从数据库查询存证量计数器,并存入上下文。
privateLong getCreationCounter(String attributeNameCreationCounter) {
Long attributeValueCreationCounter;
attributeValueCreationCounter= 0L;//从数据库读取数据到存证量计数器
Long creationCounter =((CreationMapper)storageMapper).getCreationCounter();
attributeValueCreationCounter= attributeValueCreationCounter +creationCounter;
ContextUtil.servletContext.setAttribute(attributeNameCreationCounter, attributeValueCreationCounter);returnattributeValueCreationCounter;
}