Ladies_Man

#sonic autoAssignRefinement

Aug 31st, 2016
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 21.70 KB | None | 0 0
  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.ResultSet;
  4. import java.sql.SQLException;
  5. import java.sql.Statement;
  6. import java.util.ArrayList;
  7. import java.util.List;
  8. import java.util.Set;
  9.  
  10. import org.apache.commons.logging.Log;
  11. import org.apache.commons.logging.LogFactory;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13.  
  14. import ru.it.metasonic.ruspost.infopoint.utils.BOHelper;
  15. import ru.lbpm.metasonic.businessobjects.DbHelper;
  16.  
  17. import com.jcom1.api.constants.Constants.Storage.BusinessObject20;
  18. import com.jcom1.api.dto.interfaces.IStorageInstanceBean;
  19. import com.jcom1.api.dto.interfaces.ISubjectInstanceBean;
  20. import com.jcom1.api.dto.interfaces.storages.IStorageInstanceItemBeanReducedToId;
  21. import com.jcom1.api.interfaces.IAuthorizationAdministrationApi;
  22. import com.jcom1.api.interfaces.IAuthorizationApi;
  23. import com.jcom1.api.interfaces.IBo20AccessApi;
  24. import com.jcom1.api.interfaces.ICommonApi;
  25. import com.jcom1.api.util.IViewStorageInstanceItemPair;
  26. import com.jcom1.api.util.Pair;
  27. import com.jcom1.runtime.refinement.AbstractRefinement;
  28. import com.jcom1.runtime.refinement.FunctionStateRequest;
  29. import com.jcom1.runtime.refinement.FunctionStateResponse;
  30. import com.jcom1.runtime.refinement.RefinementGenerator;
  31. import com.jcom1.runtime.refinement.SendStateRequest;
  32. import com.jcom1.runtime.refinement.SendStateResponse;
  33.  
  34. import de.metasonic.businessobjects.model.interfaces.IView;
  35. import de.metasonic.refinement.global.api.ApiUtils;
  36.  
  37. @RefinementGenerator(id = "InternalSubjectDescription_YkfkUSyFEeaLN6UD03S8mg")
  38. public class Регистратор_событийRefinement extends AbstractRefinement {
  39.  
  40.     @Autowired
  41.     ICommonApi commonApi;
  42.  
  43.     @Autowired
  44.     IBo20AccessApi accessApi;
  45.  
  46.     @Autowired
  47.     IAuthorizationApi authApi;
  48.  
  49.     @Autowired
  50.     IAuthorizationAdministrationApi administrationApi;
  51.  
  52.     final String responsibleSubjectDescId = "InternalSubjectDescription_xRtowSvvEea91xRuMXueEA";
  53.  
  54.     private final String DB_URL = "jdbc:hsqldb:hsql://localhost/jcom1";
  55.     private final String DB_USER = "sa";
  56.     private final String DB_PSW = "";
  57.  
  58.     private final String UFPS_INDEX = "UFPS_INDEX";
  59.     private final String UFPS_NAME = "UFPS_NAME";
  60.     private final String POSTAMT_INDEX = "POSTAMT_INDEX";
  61.     private final String POSTAMT_NAME = "POSTAMT_NAME";
  62.     private final String UM_GROUP = "UM_GROUP";
  63.     private final String UM_USER = "UM_USER";
  64.     private final String UM_GROUP_AS_INDEX = "INDX";
  65.     private final String UM_GROUP_AS_ROLE = "ROLE";
  66.     private final String ID_AS_IP_ID = "IP_ID";
  67.     private final String OPERATOR_IP = "OPERATOR-IP";
  68.  
  69.     private final String ACTIVE_TASK_NUMBER = "ACTIVE_TASK_NUMBER";
  70.  
  71.     private int operatorIpId;
  72.  
  73.     /**
  74.      * @generated
  75.      */
  76.     private final static Log log = LogFactory
  77.             .getLog("com.jcom1.refinement.p01__регистрация_событий.регистратор_событийrefinement");
  78.  
  79.     /**
  80.      * This function provides the data to send in the named state. TransitionID
  81.      * SendTransitionDescription_YEfBoU5xEeaKw8bSpzxULQ State: Отправить
  82.      * инцидент в работу MessageType: Инцидент TransitionType SEND Destination
  83.      * Subject 02. Обработка инцидента
  84.      *
  85.      * @return // return the id of the transition to follow or null to stay in
  86.      *         this state e.g. // return new
  87.      *         SendStateResponse("transitionXXXXXXXX");
  88.      * @generated
  89.      */
  90.     @RefinementGenerator(id = "SendStateDescription_R7itcU5xEeaKw8bSpzxULQ")
  91.     public SendStateResponse sendStateОтправить_инцидент_в_работу(
  92.             SendStateRequest sendStateRequest) {
  93.         de.metasonic.reftmpl.bo20automaticsend.runtime.Bo20AutomaticSendRuntime refinementRuntime = new de.metasonic.reftmpl.bo20automaticsend.runtime.Bo20AutomaticSendRuntime();
  94.         de.metasonic.support.context.ApplicationContextProvider.getInstance()
  95.                 .getApplicationContext().getAutowireCapableBeanFactory()
  96.                 .autowireBean(refinementRuntime);
  97.         refinementRuntime
  98.                 .setStateConfig(DATA_SendStateDescription_R7itcU5xEeaKw8bSpzxULQ);
  99.         try {
  100.             return (SendStateResponse) refinementRuntime.execute(
  101.                     getSubjectInstance(), getSubjectDescription(), getClass()
  102.                             .getClassLoader());
  103.         } catch (Exception ex) {
  104.             throw new RuntimeException(ex);
  105.         }
  106.     }
  107.  
  108.     /**
  109.      * This function provides the data to send in the named state. TransitionID
  110.      * SendTransitionDescription_d6CssCyFEeaLN6UD03S8mg State: Отправка
  111.      * замечания в работу MessageType: Замечание TransitionType SEND Destination
  112.      * Subject 03. Обработка замечаний
  113.      *
  114.      * @return // return the id of the transition to follow or null to stay in
  115.      *         this state e.g. // return new
  116.      *         SendStateResponse("transitionXXXXXXXX");
  117.      * @generated
  118.      */
  119.     @RefinementGenerator(id = "SendStateDescription_d6JaYCyFEeaLN6UD03S8mg")
  120.     public SendStateResponse sendStateОтправка_замечания_в_работу(
  121.             SendStateRequest sendStateRequest) {
  122.         de.metasonic.reftmpl.bo20automaticsend.runtime.Bo20AutomaticSendRuntime refinementRuntime = new de.metasonic.reftmpl.bo20automaticsend.runtime.Bo20AutomaticSendRuntime();
  123.         de.metasonic.support.context.ApplicationContextProvider.getInstance()
  124.                 .getApplicationContext().getAutowireCapableBeanFactory()
  125.                 .autowireBean(refinementRuntime);
  126.         refinementRuntime
  127.                 .setStateConfig(DATA_SendStateDescription_d6JaYCyFEeaLN6UD03S8mg);
  128.         try {
  129.             return (SendStateResponse) refinementRuntime.execute(
  130.                     getSubjectInstance(), getSubjectDescription(), getClass()
  131.                             .getClassLoader());
  132.         } catch (Exception ex) {
  133.             throw new RuntimeException(ex);
  134.         }
  135.     }
  136.  
  137.     /**
  138.      * @generated
  139.      */
  140.     private static final String DATA_SendStateDescription_d6JaYCyFEeaLN6UD03S8mg = "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48Y29uZmlndXJhdGlvbj48U1RBVEVfSUQgdmFsdWU9IlNlbmRTdGF0ZURlc2NyaXB0aW9uX2Q2SmFZQ3lGRWVhTE42VUQwM1M4bWciLz48Ym8yMF9maWVsZC5ibyB2YWx1ZT0icnUuaXQubWV0YXNvbmljLnJ1c3Bvc3QuaW5mb3BvaW50LmRhdGEuZXZlbnRjYXJkLkV2ZW50Q2FyZERpc3BsYXlWaWV3Ii8+PGJvMjBfZmllbGQuZmllbGQgdmFsdWU9InBvc3RhbXROYW1lIi8+PGJvMjBfZmllbGQudHlwZSB2YWx1ZT0iU1RSSU5HIi8+PHVzZXJPckdyb3VwX2ZpZWxkLnZhbHVlIHZhbHVlPSJncm91cF9uYW1lIi8+PGJvMjBfZmllbGQubW9kZSB2YWx1ZT0ic2luZ2xlIi8+PGJvMjBfZmllbGQuc3RvcmFnZSB2YWx1ZT0iQk9TdG9yYWdlRGVzY3JpcHRpb25fMUhwZzBEZV9FZWFRc3BLQ05RT1NuQSIvPjwvY29uZmlndXJhdGlvbj4=";
  141.     /**
  142.      * @generated
  143.      */
  144.     private static final String DATA_SendStateDescription_R7itcU5xEeaKw8bSpzxULQ = "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48Y29uZmlndXJhdGlvbj48U1RBVEVfSUQgdmFsdWU9IlNlbmRTdGF0ZURlc2NyaXB0aW9uX1I3aXRjVTV4RWVhS3c4YlNwenhVTFEiLz48Ym8yMF9maWVsZC5ibyB2YWx1ZT0icnUuaXQubWV0YXNvbmljLnJ1c3Bvc3QuaW5mb3BvaW50LmRhdGEuZXZlbnRjYXJkLkV2ZW50Q2FyZERpc3BsYXlWaWV3Ii8+PGJvMjBfZmllbGQuZmllbGQgdmFsdWU9InBvc3RhbXROYW1lIi8+PGJvMjBfZmllbGQudHlwZSB2YWx1ZT0iU1RSSU5HIi8+PHVzZXJPckdyb3VwX2ZpZWxkLnZhbHVlIHZhbHVlPSJncm91cF9uYW1lIi8+PGJvMjBfZmllbGQubW9kZSB2YWx1ZT0ic2luZ2xlIi8+PGJvMjBfZmllbGQuc3RvcmFnZSB2YWx1ZT0iQk9TdG9yYWdlRGVzY3JpcHRpb25fMUhwZzBEZV9FZWFRc3BLQ05RT1NuQSIvPjwvY29uZmlndXJhdGlvbj4=";
  145.     /**
  146.      * @generated
  147.      */
  148.     private static final String DATA_FunctionStateDescription_H2hzQV77EeaP64PmrlFw2w = "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48Y29uZmlndXJhdGlvbj48U1RBVEVfSUQgdmFsdWU9IkZ1bmN0aW9uU3RhdGVEZXNjcmlwdGlvbl9IMmh6UVY3N0VlYVA2NFBtcmxGdzJ3Ii8+PGJvMjBfZmllbGQuYm8gdmFsdWU9InJ1Lml0Lm1ldGFzb25pYy5ydXNwb3N0LmluZm9wb2ludC5kYXRhLmV2ZW50Y2FyZC5FdmVudENhcmRJbml0VmlldyIvPjxzdG9yYWdlLnZhbHVlIHZhbHVlPSJCT1N0b3JhZ2VEZXNjcmlwdGlvbl8xSHBnMERlX0VlYVFzcEtDTlFPU25BIi8+PGJvMjBfZmllbGQudHlwZS4xIHZhbHVlPSJFTlVNIi8+PGJvMjBfZmllbGQudmFsdWUuMSB2YWx1ZT0ibmV3SW5jaWRlbnQiLz48Ym8yMF9maWVsZC5tb2RlIHZhbHVlPSJjaGVjayIvPjxibzIwX2ZpZWxkLmZpZWxkLjEgdmFsdWU9InN0YXR1cyIvPjxibzIwX2ZpZWxkLnN0b3JhZ2UgdmFsdWU9IkJPU3RvcmFnZURlc2NyaXB0aW9uXzFIcGcwRGVfRWVhUXNwS0NOUU9TbkEiLz48L2NvbmZpZ3VyYXRpb24+";
  149.     /**
  150.      * @generated
  151.      */
  152.     private static final String DATA_FunctionStateDescription___fMQV7_EeaP64PmrlFw2w = "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48Y29uZmlndXJhdGlvbj48U1RBVEVfSUQgdmFsdWU9IkZ1bmN0aW9uU3RhdGVEZXNjcmlwdGlvbl9fX2ZNUVY3X0VlYVA2NFBtcmxGdzJ3Ii8+PGJvMjBfZmllbGQuYm8gdmFsdWU9InJ1Lml0Lm1ldGFzb25pYy5ydXNwb3N0LmluZm9wb2ludC5kYXRhLmV2ZW50Y2FyZC5FdmVudENhcmREaXNwbGF5UmVtYXJrVmlldyIvPjxzdG9yYWdlLnZhbHVlIHZhbHVlPSJCT1N0b3JhZ2VEZXNjcmlwdGlvbl8xSHBnMERlX0VlYVFzcEtDTlFPU25BIi8+PGJvMjBfZmllbGQudHlwZS4xIHZhbHVlPSJFTlVNIi8+PGJvMjBfZmllbGQudmFsdWUuMSB2YWx1ZT0icmVtYXJrSXNSZWdpc3RlcmVkIi8+PGJvMjBfZmllbGQubW9kZSB2YWx1ZT0iY2hlY2siLz48Ym8yMF9maWVsZC5maWVsZC4xIHZhbHVlPSJzdGF0dXMiLz48Ym8yMF9maWVsZC5zdG9yYWdlIHZhbHVlPSJCT1N0b3JhZ2VEZXNjcmlwdGlvbl8xSHBnMERlX0VlYVFzcEtDTlFPU25BIi8+PC9jb25maWd1cmF0aW9uPg==";
  153.  
  154.     /**
  155.      * This method is called when the named function state is reached State:
  156.      * STATUS: Установить статус: Новое событие StateType: FUNCTION
  157.      *
  158.      * Return values "FunctionTransitionDescription_NkQyIV77EeaP64PmrlFw2w" when
  159.      * result is "" to go to state Запуск контроля срока обработки
  160.      *
  161.      * @return return the id of the transition to follow e.g. // return new
  162.      *         FunctionStateResponse("transitionXXXXXXXX");
  163.      * @generated
  164.      */
  165.     @RefinementGenerator(id = "FunctionStateDescription_H2hzQV77EeaP64PmrlFw2w")
  166.     public FunctionStateResponse functionSTATUS__Установить_статус__Новое_событие(
  167.             FunctionStateRequest functionStateRequest) {
  168.         de.metasonic.reftmpl.fieldvaluesetter.runtime.RefinementTemplateRuntime refinementRuntime = new de.metasonic.reftmpl.fieldvaluesetter.runtime.RefinementTemplateRuntime();
  169.         de.metasonic.support.context.ApplicationContextProvider.getInstance()
  170.                 .getApplicationContext().getAutowireCapableBeanFactory()
  171.                 .autowireBean(refinementRuntime);
  172.         refinementRuntime
  173.                 .setStateConfig(DATA_FunctionStateDescription_H2hzQV77EeaP64PmrlFw2w);
  174.         try {
  175.             return (FunctionStateResponse) refinementRuntime.execute(
  176.                     getSubjectInstance(), getSubjectDescription(), getClass()
  177.                             .getClassLoader());
  178.         } catch (Exception ex) {
  179.             throw new RuntimeException(ex);
  180.         }
  181.     }
  182.  
  183.     /**
  184.      * This method is called when the named function state is reached State:
  185.      * STATUS: Установить статус: Инцидент зарегистрирован StateType: FUNCTION
  186.      *
  187.      * Return values "FunctionTransitionDescription_cxH2gV7xEeaP64PmrlFw2w" when
  188.      * result is "" to go to state Событие определено как инцидент
  189.      *
  190.      * @return return the id of the transition to follow e.g. // return new
  191.      *         FunctionStateResponse("transitionXXXXXXXX");
  192.      * @generated
  193.      */
  194.     @RefinementGenerator(id = "FunctionStateDescription_UebAgV7xEeaP64PmrlFw2w")
  195.     public FunctionStateResponse functionSTATUS__Установить_статус__Инцидент_зарегистрирован(
  196.             FunctionStateRequest functionStateRequest) {
  197.         de.metasonic.reftmpl.fieldvaluesetter.runtime.RefinementTemplateRuntime refinementRuntime = new de.metasonic.reftmpl.fieldvaluesetter.runtime.RefinementTemplateRuntime();
  198.         de.metasonic.support.context.ApplicationContextProvider.getInstance()
  199.                 .getApplicationContext().getAutowireCapableBeanFactory()
  200.                 .autowireBean(refinementRuntime);
  201.         refinementRuntime
  202.                 .setStateConfig(DATA_FunctionStateDescription_UebAgV7xEeaP64PmrlFw2w);
  203.         try {
  204.             return (FunctionStateResponse) refinementRuntime.execute(
  205.                     getSubjectInstance(), getSubjectDescription(), getClass()
  206.                             .getClassLoader());
  207.         } catch (Exception ex) {
  208.             throw new RuntimeException(ex);
  209.         }
  210.     }
  211.  
  212.     /**
  213.      * This method is called when the named function state is reached State:
  214.      * STATUS: Установить статус: Замечание зарегистрировано StateType: FUNCTION
  215.      *
  216.      * Return values "FunctionTransitionDescription_fJoUEV8AEeaP64PmrlFw2w" when
  217.      * result is "" to go to state Событие определено как замечание
  218.      *
  219.      * @return return the id of the transition to follow e.g. // return new
  220.      *         FunctionStateResponse("transitionXXXXXXXX");
  221.      * @generated
  222.      */
  223.     @RefinementGenerator(id = "FunctionStateDescription___fMQV7_EeaP64PmrlFw2w")
  224.     public FunctionStateResponse functionSTATUS__Установить_статус__Замечание_зарегистрировано(
  225.             FunctionStateRequest functionStateRequest) {
  226.         de.metasonic.reftmpl.fieldvaluesetter.runtime.RefinementTemplateRuntime refinementRuntime = new de.metasonic.reftmpl.fieldvaluesetter.runtime.RefinementTemplateRuntime();
  227.         de.metasonic.support.context.ApplicationContextProvider.getInstance()
  228.                 .getApplicationContext().getAutowireCapableBeanFactory()
  229.                 .autowireBean(refinementRuntime);
  230.         refinementRuntime
  231.                 .setStateConfig(DATA_FunctionStateDescription___fMQV7_EeaP64PmrlFw2w);
  232.         try {
  233.             return (FunctionStateResponse) refinementRuntime.execute(
  234.                     getSubjectInstance(), getSubjectDescription(), getClass()
  235.                             .getClassLoader());
  236.         } catch (Exception ex) {
  237.             throw new RuntimeException(ex);
  238.         }
  239.     }
  240.  
  241.     /**
  242.      * This method is called when the named function state is reached State:
  243.      * Автоназначение ответственного StateType: FUNCTION
  244.      *
  245.      * Return values "FunctionTransitionDescription_V7Qmg26XEeaCBYqxdMxsCg" when
  246.      * result is "" to go to state STATUS: Установить статус: Инцидент
  247.      * зарегистрирован
  248.      *
  249.      * @return return the id of the transition to follow e.g. // return new
  250.      *         FunctionStateResponse("transitionXXXXXXXX");
  251.      */
  252.     @RefinementGenerator(id = "FunctionStateDescription_QitNcW6XEeaCBYqxdMxsCg")
  253.     public FunctionStateResponse functionАвтоназначение_ответственного(
  254.             FunctionStateRequest functionStateRequest) {
  255.         log.error("autoassign start");
  256.  
  257.         String operatorIpIdQuery = String.format(
  258.                 "SELECT ID AS %s FROM UM_GROUP "
  259.                         + "WHERE NAME = '%s'",
  260.  
  261.                 ID_AS_IP_ID, OPERATOR_IP);
  262.  
  263.         String availableOperatorsQueryTemplate = String.format(
  264.                 "SELECT A.UM_GROUP AS %s, A.%s, B.UM_GROUP AS %s "
  265.                         + "FROM UM_GROUP_UM_USER AS A "
  266.                         + "LEFT JOIN UM_GROUP_UM_USER AS B "
  267.                         + "ON A.%s = B.%s    "
  268.                         + " WHERE A.UM_GROUP = %s "
  269.                         + "     AND B.UM_GROUP = %s",
  270.  
  271.                 UM_GROUP_AS_INDEX, UM_USER, UM_GROUP_AS_ROLE,
  272.                 UM_USER, UM_USER,
  273.                 "%s", "%s");
  274.  
  275.         String activeTasksQueryTemplate = String
  276.                 .format("SELECT count(*) AS %s "
  277.                         + " FROM ((SELECT DROPPED, AVAILABLETRANSITIONS, RT_PROCDESC, RT_SUBDESC, UM_USER_EDITOR "
  278.                         + "         FROM RT_SUBINST "
  279.                         + "         WHERE DROPPED = false AND "
  280.                         + "             AVAILABLETRANSITIONS = true "
  281.                         + "             AND UM_USER_EDITOR = %s) AS A "
  282.                         + "         JOIN (SELECT ID, JPASS_ID, NAME "
  283.                         + "                 FROM RT_SUBDESC "
  284.                         + "                 WHERE JPASS_ID = '%s') AS B "
  285.                         + "         ON A.RT_SUBDESC = B.ID)",
  286.  
  287.                 ACTIVE_TASK_NUMBER, "%s", "%s");
  288.  
  289.         try (final Connection connection = DbHelper.getConnection(DbHelper.PROP_DB_INT);) {
  290.             log.error("connection has been set");
  291.  
  292.             // find ID for OPERATOR-IP
  293.             // form query as SELECT TOP 1 ID AS ...
  294.             operatorIpId = getOperatorIpId(connection, operatorIpIdQuery);
  295.             log.error(OPERATOR_IP + "'s ID: " + operatorIpId);
  296.  
  297.             // retrieve current card's postamt info
  298.             IView primeBOEventCard = (IView) getPrimeBO(this.getSubjectInstance());
  299.             if (null != primeBOEventCard) {
  300.                 log.error("retrieving postamt data for current EventCard");
  301.  
  302.                 String postamtIndex = (String) BOHelper.getAttribute(primeBOEventCard, "postamtIndex");
  303.                 String postamtName = (String) BOHelper.getAttribute(primeBOEventCard, "postamtName");
  304.                 log.error("     postamt: " + postamtIndex + "/" + postamtName);
  305.  
  306.                 // get operators from postamts that belong to concrete ufps
  307.                 // form query as ... WHERE UM_GROUP = 123456 AND UM_GROUP = 10
  308.                 String availableOperatorsQuery = String.format(availableOperatorsQueryTemplate, postamtIndex,operatorIpId);
  309.                 Pair[] operatorUserRolePairs = getAvailableOperators(connection, availableOperatorsQuery);
  310.  
  311.                 // now as we got available operators, lets count number of their tasks
  312.                 if (0 != operatorUserRolePairs.length) {
  313.                     log.error("iterating over [" + operatorUserRolePairs.length + "] available operators");
  314.                     log.error("executing: " + String.format(activeTasksQueryTemplate, "<sampleUserId>", "<sampleInternalSubjDesc>"));
  315.                    
  316.                     // iterate over operators and count number of their active tasks
  317.                     String lazybonesId = null;
  318.                     int minTaskNum = Integer.MAX_VALUE;
  319.                     for (Pair p : operatorUserRolePairs) {
  320.  
  321.                         String currUserId = p.getFirstElement();
  322.                         // count number of active tasks for user
  323.                         // form query as ... WHERE A.UM_USER_EDITOR = 1337 ... WHERE B.JPASS_ID = 'InternalSubjDesc_322'
  324.                         String activeTasksQuery = String.format( activeTasksQueryTemplate, currUserId, responsibleSubjectDescId);
  325.                         int taskNum = countActiveTasks(connection, activeTasksQuery);
  326.  
  327.                         log.error("id:taskNum  (" + currUserId + ":" + taskNum + ")");
  328.                         if (taskNum < minTaskNum) {
  329.                             minTaskNum = taskNum;
  330.                             lazybonesId = currUserId;
  331.                         }
  332.                     }
  333.  
  334.                     log.error("operator to be assigned found: " + lazybonesId);
  335.                     BOHelper.setAttribute(primeBOEventCard, "assignedOperator", lazybonesId);
  336.                     log.error("saving changes");
  337.                    
  338.                    
  339.                     //String field "assignedOperator" in EventCardBO should be created
  340. //==============================================================================================
  341. //-----------------------------some troubles with saving here-----------------------------------
  342. //==============================================================================================
  343.                     saveNewPrimeBO(this.getSubjectInstance(), primeBOEventCard);
  344.                    
  345.                     String op = (String)BOHelper.getAttribute(primeBOEventCard, "assignedOperator");
  346.                     log.error("op: " + op);
  347.  
  348.                 } else {
  349.                     log.error("no availble " + OPERATOR_IP + "s were found by current postamt");
  350.                 }
  351.             } else {
  352.                 log.error("error retrieving primeBO");
  353.             }
  354.  
  355.             log.error("all done");
  356.             log.error("\n");
  357.  
  358.         } catch (Exception e) {
  359.             e.printStackTrace();
  360.         }
  361.  
  362.         return null;
  363.     }
  364.  
  365.     private int getOperatorIpId(Connection connection, String query) {
  366.         int id = -1;
  367.  
  368.         try {
  369.             log.error("executing: " + query);
  370.             Statement stmt = connection.createStatement();
  371.             stmt.setMaxRows(1);
  372.  
  373.             ResultSet cgiSet = stmt.executeQuery(query);
  374.  
  375.             if (cgiSet.next())
  376.                 id = cgiSet.getInt(ID_AS_IP_ID);
  377.  
  378.             cgiSet.close();
  379.  
  380.         } catch (SQLException e) {
  381.             log.error("error fetching " + OPERATOR_IP + "'s ID");
  382.         }
  383.  
  384.         return id;
  385.     }
  386.  
  387.     private Pair[] getAvailableOperators(Connection connection, String query) {
  388.         List<Pair> userRolePairs = new ArrayList<Pair>();
  389.         try {
  390.             ResultSet result = connection.createStatement().executeQuery(query);
  391.             log.error("executing: " + query);
  392.  
  393.             while (result.next()) {
  394.  
  395.                 int umGroupAsIndex = result.getInt(UM_GROUP_AS_INDEX);
  396.                 int umUserAsId = result.getInt(UM_USER);
  397.                 int umGroupAsRole = result.getInt(UM_GROUP_AS_ROLE);
  398.                 log.error("  indx/id/role: " + umGroupAsIndex + " / " + umUserAsId + " / " + umGroupAsRole);
  399.  
  400.                 userRolePairs.add(new Pair(String.valueOf(umUserAsId), String.valueOf(umGroupAsRole)));
  401.             }
  402.             result.close();
  403.  
  404.         } catch (SQLException e) {
  405.             e.printStackTrace();
  406.         }
  407.         return userRolePairs.toArray(new Pair[0]);
  408.     }
  409.  
  410.     private int countActiveTasks(Connection connection, String query) {
  411.         int id = -1;
  412.  
  413.         try {
  414.             // log.error("executing: " + query);
  415.             Statement stmt = connection.createStatement();
  416.             stmt.setMaxRows(1);
  417.  
  418.             ResultSet cgiSet = stmt.executeQuery(query);
  419.  
  420.             if (cgiSet.next())
  421.                 id = cgiSet.getInt(ACTIVE_TASK_NUMBER);
  422.  
  423.             cgiSet.close();
  424.  
  425.         } catch (SQLException e) {
  426.             log.error("error fetching task number");
  427.         }
  428.  
  429.         return id;
  430.     }
  431.  
  432.     private IView getPrimeBO(ISubjectInstanceBean subjectInstanceBean) throws Exception {
  433.         IBo20AccessApi bo20AccessApi = ApiUtils.lookupBo20AccessApi();
  434.         Set<IStorageInstanceBean> storages = bo20AccessApi.getStorages(subjectInstanceBean, null);
  435.         IStorageInstanceBean storage = storages.iterator().next();
  436.         Set<IStorageInstanceItemBeanReducedToId> storageItems = bo20AccessApi.getItems(subjectInstanceBean, storage);
  437.         IStorageInstanceItemBeanReducedToId storageItem = storageItems.iterator().next();
  438.         String actionType = BusinessObject20.Action.READ;
  439.         IViewStorageInstanceItemPair storageInstanceItem = bo20AccessApi.getIViewAndItem(subjectInstanceBean, storageItem, actionType);
  440.         IView iView = storageInstanceItem.getiView();
  441.  
  442.         return iView;
  443.     }
  444.  
  445.     private void saveNewPrimeBO(ISubjectInstanceBean subjectInstanceBean, IView iView) throws Exception {
  446.         log.error("looking for api");
  447.         IBo20AccessApi bo20AccessApi = ApiUtils.lookupBo20AccessApi();
  448.         log.error("retrieving storages");
  449.         Set<IStorageInstanceBean> storages = bo20AccessApi.getStorages(subjectInstanceBean, null);
  450.         log.error("retrieving single storage");
  451.         IStorageInstanceBean storage = storages.iterator().next();
  452.         log.error("saving");
  453.         bo20AccessApi.saveNewIViewInStorage(subjectInstanceBean, iView, storage);
  454.         log.error("done");
  455.     }
  456.  
  457.     /**
  458.      * @generated
  459.      */
  460.     private static final String DATA_FunctionStateDescription_UebAgV7xEeaP64PmrlFw2w = "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48Y29uZmlndXJhdGlvbj48U1RBVEVfSUQgdmFsdWU9IkZ1bmN0aW9uU3RhdGVEZXNjcmlwdGlvbl9VZWJBZ1Y3eEVlYVA2NFBtcmxGdzJ3Ii8+PGJvMjBfZmllbGQuYm8gdmFsdWU9InJ1Lml0Lm1ldGFzb25pYy5ydXNwb3N0LmluZm9wb2ludC5kYXRhLmV2ZW50Y2FyZC5FdmVudENhcmRJbml0VmlldyIvPjxzdG9yYWdlLnZhbHVlIHZhbHVlPSJCT1N0b3JhZ2VEZXNjcmlwdGlvbl8xSHBnMERlX0VlYVFzcEtDTlFPU25BIi8+PGJvMjBfZmllbGQudHlwZS4xIHZhbHVlPSJFTlVNIi8+PGJvMjBfZmllbGQudmFsdWUuMSB2YWx1ZT0iaW5jaWRlbnRJc1JlZ2lzdGVyZWQiLz48Ym8yMF9maWVsZC5tb2RlIHZhbHVlPSJjaGVjayIvPjxibzIwX2ZpZWxkLmZpZWxkLjEgdmFsdWU9InN0YXR1cyIvPjxibzIwX2ZpZWxkLnN0b3JhZ2UgdmFsdWU9IkJPU3RvcmFnZURlc2NyaXB0aW9uXzFIcGcwRGVfRWVhUXNwS0NOUU9TbkEiLz48L2NvbmZpZ3VyYXRpb24+";
  461.  
  462. }
Advertisement
Add Comment
Please, Sign In to add comment