| /** |
| ****************************************************************************** |
| * Copyright © 2017-2018 PTA GmbH. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| ****************************************************************************** |
| */ |
| package org.eclipse.openk.elogbook.controller; |
| |
| |
| import org.apache.log4j.Logger; |
| import org.eclipse.openk.elogbook.common.BackendConfig; |
| import org.eclipse.openk.elogbook.common.JsonGeneratorBase; |
| import org.eclipse.openk.elogbook.communication.RestServiceWrapper; |
| import org.eclipse.openk.elogbook.exceptions.BtbException; |
| import org.eclipse.openk.elogbook.persistence.dao.AutoCloseEntityManager; |
| import org.eclipse.openk.elogbook.persistence.dao.EntityHelper; |
| import org.eclipse.openk.elogbook.persistence.dao.TblNotificationDao; |
| import org.eclipse.openk.elogbook.viewmodel.contactbasedata.ContactTupel; |
| import org.eclipse.openk.elogbook.viewmodel.contactbasedata.VwDetailedContact; |
| import org.eclipse.openk.elogbook.viewmodel.contactbasedata.VwDetailedContactPage; |
| |
| import javax.persistence.EntityManager; |
| import java.util.List; |
| import java.util.Map; |
| import java.util.UUID; |
| import java.util.stream.Collectors; |
| |
| public class ContactBaseDataManager { |
| private static final Logger LOGGER = Logger.getLogger(ContactBaseDataManager.class.getName()); |
| |
| |
| private static final ContactBaseDataManager INSTANCE = new ContactBaseDataManager(); |
| |
| private ContactBaseDataManager() { |
| } |
| |
| public static ContactBaseDataManager getInstance() { |
| return INSTANCE; |
| } |
| |
| public List<ContactTupel> getUserContacts(String token) throws BtbException { |
| RestServiceWrapper restServiceWrapper = new RestServiceWrapper(BackendConfig.getInstance().getContactBaseDataApiUrl(), false); |
| String response = restServiceWrapper.performGetRequest("contacts?size=2000",token); |
| VwDetailedContactPage vwDetailedContactPage = JsonGeneratorBase.getGson().fromJson(response, |
| VwDetailedContactPage.class); |
| return vwDetailedContactPage.getContent().stream().map(this::mapFromViewObj ).collect(Collectors.toList()); |
| } |
| |
| public void synchronizeContacts(String token) { |
| LOGGER.debug("synchronizeContacts is called"); |
| EntityManager emOrg = EntityHelper.getEMF().createEntityManager(); |
| try (AutoCloseEntityManager em = new AutoCloseEntityManager(emOrg)) { |
| em.getTransaction().begin(); |
| TblNotificationDao notifDao = new TblNotificationDao(em); |
| Map<UUID, String> uuid2NameMap = getUserContacts(token).stream().collect(Collectors.toMap(ContactTupel::getContactUuid, ContactTupel::getContactName)); |
| notifDao.getDistinctResponsibilityForwardingUuid() |
| .forEach( contactUuid -> notifDao.updateResponsibilityForwardingByContactUuid( contactUuid, uuid2NameMap.getOrDefault(contactUuid, "/gelöscht/"))); |
| em.getTransaction().commit(); |
| |
| } catch (BtbException btbException) { |
| LOGGER.error("error in synchronizeContacts", btbException); |
| } finally { |
| LOGGER.debug("synchronizeContacts is finished"); |
| } |
| } |
| |
| |
| private ContactTupel mapFromViewObj( VwDetailedContact vwDetailedContact ) { |
| String userName = vwDetailedContact.getName(); |
| if (userName != null) { |
| userName = userName.replace("," ,""); |
| } |
| ContactTupel ct = new ContactTupel(); |
| ct.setContactName(userName); |
| ct.setContactUuid(vwDetailedContact.getUuid()); |
| return ct; |
| |
| } |
| |
| } |