/* * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. * If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. * Copyright (c) 2014, MPL CodeInside http://codeinside.ru */ package ru.codeinside.adm; import com.google.common.base.Function; import com.vaadin.addon.jpacontainer.filter.util.AdvancedFilterableSupport; import org.activiti.engine.ProcessEngine; import ru.codeinside.adm.database.Bid; import ru.codeinside.adm.database.ClientRequestEntity; import ru.codeinside.adm.database.Employee; import ru.codeinside.adm.database.ExternalGlue; import ru.codeinside.adm.database.Group; import ru.codeinside.adm.database.InfoSystem; import ru.codeinside.adm.database.InfoSystemService; import ru.codeinside.adm.database.News; import ru.codeinside.adm.database.Organization; import ru.codeinside.adm.database.ProcedureProcessDefinition; import ru.codeinside.adm.database.Role; import ru.codeinside.adm.database.ServiceResponseEntity; import ru.codeinside.adm.database.ServiceUnavailable; import ru.codeinside.adm.database.TaskDates; import ru.codeinside.calendar.DueDateCalculator; import ru.codeinside.gses.activiti.Pair; import ru.codeinside.gses.webui.gws.TRef; import ru.codeinside.gws.api.Client; import ru.codeinside.gws.api.Enclosure; import ru.codeinside.gws.api.ServerResponse; import ru.codeinside.gws.api.ServiceDefinitionParser; import ru.codeinside.log.Actor; import javax.annotation.security.PermitAll; import javax.annotation.security.RolesAllowed; import java.io.IOException; import java.io.InputStream; import java.text.ParseException; import java.util.Date; import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeSet; @RolesAllowed("Administrator") public interface AdminService { /** * контракт создания. */ Object afterCreate(); /** * контракт разрушения. Вызывающий провайдер обычно Startup-бин и транзакции в нём доступны. */ void preDestroy(Object ticket); public Organization createOrganization(String name, String login, Organization parent); public List<Organization> findAllOrganizations(); public Organization findOrganizationById(Long id); public List<Organization> findOrganizationIdsByName(String name); public void updateOrganization(Organization organization); public Employee createEmployee(String login, String password, String fio, String snils, Set<Role> roles, String creator, long orgId, TreeSet<String> groupExecutor, TreeSet<String> groupSupervisorEmp, TreeSet<String> groupSupervisorOrg); public Employee createEmployee(String login, String password, String fio, String snils, Set<Role> roles, String creator, long orgId); @PermitAll public Employee findEmployeeByLogin(String login); @PermitAll public Employee findEmployeeBySnils(String snils); @PermitAll public boolean isUniqueSnils(String login, String snils); public Set<String> getOrgGroupNames(long orgId); public Set<String> getOrgGroupNames(); public Set<String> getEmpGroupNames(); @PermitAll public void init(); public boolean setOrgGroupNames(long orgId, Set<String> names); public UserItem getUserItem(String login); public void setUserItem(String login, UserItem userItem); public int getEmployeesCount(long orgId, boolean locked); public <T> T withEmployee(long orgId, String login, Function<Employee, T> callback); public <T> T withEmployee(String login, Function<Employee, T> callback); public <T> T withEmployees(long orgId, boolean locked, int start, int count, String[] order, boolean[] asc, Function<List<Employee>, T> callback); public boolean loadProcessFixtures(ProcessEngine engine, InputStream is) throws IOException; public boolean createGroup(String name, String title, Boolean social); public void deleteGroup(Long id); public List<Group> findGroupByName(String name); public Boolean findUsesInfoSystemService(String sname, String sversion); public List<Employee> findAllEmployees(); public void setOrganizationInGroup(Group group, TreeSet<String> twinValue); public void setEmloyeeInGroup(Group group, TreeSet<String> twinValue); public Bid getBidByTask(String taskId); public Bid getBid(String bidId); public Bid getBidByProcessInstanceId(String processInstanceId); public TaskDates getTaskDatesByTaskId(String taskId); public Set<String> selectGroupNamesBySocial(boolean social); public List<Organization> getRootOrganizations(); public int countInfoSystems(boolean source); public List<InfoSystem> queryInfoSystems(boolean source, String[] sort, boolean[] asc, int start, int count); InfoSystem createInfoSystem(String code, String value, String comment); public News createNews(String title, String text); public void updateNews(Long obj1, Object obj2, Object obj3); public void deleteNews(Long id); public List<News> getNews(); public void removeInfoSystemService(long id); void updateInfoSystemService(String id, String infoSysId, String source, String address, String revision, String sname, String sversion, String name, boolean available, boolean logEnabled); Long createInfoSystemService(String infoSysId, String source, String address, String revision, String sname, String sversion, String name, boolean available, boolean logEnabled); public List<InfoSystemService> getInfoSystemServiceBySName(String name); public InfoSystem getMainInfoSystem(); boolean deleteInfoSystem(String code); public List<Group> getControlledOrgGroupsOf(String login, int startIndex, int count, String[] order, boolean[] asc, AdvancedFilterableSupport newSender); public List<Group> getControlledEmpGroupsOf(String login, int startIndex, int count, String[] order, boolean[] asc, AdvancedFilterableSupport newSender); int getControlledOrgGroupsCount(String login, AdvancedFilterableSupport newSender); int getControlledEmpGroupsCount(String login, AdvancedFilterableSupport newSender); List<Employee> getOrgGroupMembers(String groupName, String taskId, int startIndex, int count); List<Employee> getEmpGroupMembers(String groupName, String taskId, int startIndex, int count); int getOrgGroupMembersCount(String groupName, String taskId); int getEmpGroupMembersCount(String groupName, String taskId); long saveClientRequestEntity(ClientRequestEntity entity); ClientRequestEntity getClientRequestEntity(long id); public void createLog(Actor actor, String entityName, String entityId, String action, String info, boolean actionResult); String getSystemProperty(String key); void saveSystemProperty(String key, String value); public Actor createActor(); List<TRef<Client>> getClientRefs(); TRef<Client> getClientRefByNameAndVersion(String name, String version); ExternalGlue getGlueByProcessInstanceId(String processInstanceId); void saveServiceResponse(ServiceResponseEntity response, List<Enclosure> enclosures, Map<Enclosure, String[]> usedEnclosures); int countOfServerResponseByBidIdAndStatus(long bid, String status); ServiceResponseEntity getServerResponseEntity(long bidId, String status); ServerResponse getServerResponseByBidIdAndStatus(long bid1, long bid, String status); ProcedureProcessDefinition getProcedureProcessDefinitionByProcedureCode(long procedureCode); Long getProcedureCodeByProcessDefinitionId(String processDefinitionId); int countOfBidByEmail(String login, AdvancedFilterableSupport newSender); List<Bid> bidsByLogin(String login, final int startIndex, final int count, String[] order, boolean[] asc, AdvancedFilterableSupport newSender); ServiceDefinitionParser getServiceDefinitionParser(); int countServiceUnavailableByInfoSystem(long id); List<ServiceUnavailable> queryServiceUnavailableByInfoSystem(long id, int start, int count); void saveServiceUnavailable(InfoSystemService curService); void loadEmployeeData(InputStream data, String currentUserName) throws IOException; @RolesAllowed({"Executor", "Supervisor"}) void saveBidAssignment(ProcessEngine engine, String superProcessId, String toLogin); void toggleSource(String code, boolean source); void toggleMain(String code, boolean main); /** * Возвращает калькулятор периодов который исчисляются в рабочих или календарных днях * * @param business - рабочие дни * @return экземпляр DueDateCalculator */ DueDateCalculator getCalendarBasedDueDateCalculator(boolean business); /** * Выполняет импорт спраочника рабочих дней * * @param inputStream поток данных из справочника * @return пару количества обновленных заявок и этапов */ Pair<Integer, Integer> importBusinessCalendar(InputStream inputStream) throws IOException, ParseException; /** * Удаляет дату из справочника рабочих дней * * @param dateForRemove дата для удаления * @return пару количества обновленных заявок и этапов */ Pair<Integer, Integer> deleteDateFromBusinessCalendar(Date dateForRemove); }