/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package cli_fmw.main.audit;
import cli_fmw.main.*;
import cli_fmw.delegate.AuditInfo;
import cli_fmw.delegate.AuditListener;
import cli_fmw.delegate.DelegateSimple;
import cli_fmw.delegate.collaborator.CollaboratorLocalAbstract;
import cli_fmw.login.UserInfoAbstract;
import cli_fmw.utils.MessageBox;
import framework.audit.AuditDetails;
import framework.audit.bean.AuditBean;
import framework.audit.bean.AuditBeanRemote;
import java.util.Date;
import java.util.List;
/**
* Гибридный класс, среднее между делегатом служебным классом и ещё чем то вроде диалога.
* Возможно будет переписан, но пока пусть хотя бы начнёт работать
* @author petr
*/
public class AuditManager extends DelegateSimple<AuditBeanRemote> implements AuditListener {
public AuditManager() {
super(AuditBean.class.getSimpleName());
System.out.println("-=<CREATE AUDIT MANAGER>=-");
}
@Override
public void needDSA(AuditInfo info) {
work(info.getAuditDetails());
}
private void saveSignedAudit(List<AuditDetails> list){
try {
getBean().get().saveAudit(list);
} catch (Exception ex) {
clearBean();
MessageBox.showException(ex);
}
}
private void work(List<AuditDetails> list){
long t1 = new Date().getTime();
long t2;
CollaboratorLocalAbstract collaboratorLocal = UserInfoAbstract.get().getCollaboratorLocal();
for (AuditDetails auditDetails : list) {
try {
byte[] bytes = auditDetails.value.getBytes();
t2 = new Date().getTime();
auditDetails.sign = collaboratorLocal.sign(bytes);
System.out.println("SIGN AUDIT " + auditDetails.id + " IN " + (new Date().getTime() - t2) + " ms");
} catch (ClipsException ex) {
ex.printStackTrace();
}
}
AuditFrame.getDialog().showMe(list);
saveSignedAudit(list);
System.out.println("AUDIT WORK IN " + (new Date().getTime() - t1) + " ms");
}
}