package com.ese.service;
import com.ese.model.dao.MSLocationItemsDAO;
import com.ese.model.db.MSItemModel;
import com.ese.model.db.MSLocationItemsModel;
import com.ese.model.db.MSLocationModel;
import com.ese.model.view.LocationItemView;
import com.ese.transform.LocationItemTransform;
import com.ese.utils.Utils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Component
@Transactional
public class LocationItemService extends Service{
private static final long serialVersionUID = 4112578634029870000L;
@Resource private MSLocationItemsDAO msLocationItemsDAO;
@Resource private LocationItemTransform locationItemTransform;
public List<LocationItemView> findLocationByItemId(int itemId){
List<LocationItemView> locationItemViewList = Utils.getEmptyList();
try {
locationItemViewList = msLocationItemsDAO.findLocationByItemId(itemId);
} catch (Exception e) {
log.debug("Exception : {}", e);
}
return locationItemViewList;
}
public List<MSLocationItemsModel> findLocationItemByLocationId(int locationId){
log.debug("findLocationItem(). {}", locationId);
List<MSLocationItemsModel> msLocationItemsModels = Utils.getEmptyList();
if (!Utils.isZero(locationId)){
msLocationItemsModels = msLocationItemsDAO.findByLocationId(locationId);
log.debug("msLocationItemsModels Size : {}", msLocationItemsModels.size());
}
return msLocationItemsModels;
}
public void addToLocationItemModel(List<MSItemModel> msItemModels, MSLocationModel msLocationModel){
log.debug("addToLocationItemModel() {}, {}", msItemModels.size(),msLocationModel.toString());
MSLocationItemsModel model;
List<MSLocationItemsModel> msLocationItemsModels;
if (Utils.isSafetyList(msItemModels)){
for (MSItemModel msItemModel : msItemModels){
model = locationItemTransform.transformToModel(msItemModel, msLocationModel);
try {
msLocationItemsDAO.persist(model);
msLocationItemsModels = msLocationItemsDAO.findByLocationId(msLocationModel.getId());
Map<Integer, MSLocationItemsModel> hashMap = new HashMap();
for(MSLocationItemsModel msLocationItemsModel : msLocationItemsModels){
int key = msLocationItemsModel.getMsItemModel().getId();
if (!hashMap.containsKey(key)){
hashMap.put(key, msLocationItemsModel);
} else {
log.debug("Delete : {}", msLocationItemsModel.getId());
msLocationItemsDAO.delete(msLocationItemsModel);
}
}
log.debug("hashMap : {}", hashMap.toString());
} catch (Exception e) {
log.debug("Exception persist MSLocationItemModel : ", e);
}
}
}
}
public void deleteLocationItemModel(List<MSLocationItemsModel> msLocationItemsModels){
log.debug("delete(). {}", msLocationItemsModels.size());
if (Utils.isSafetyList(msLocationItemsModels)){
for (MSLocationItemsModel model : msLocationItemsModels){
try {
msLocationItemsDAO.deleteByUpdate(model);
} catch (Exception e) {
log.debug("Exception error delete MSLocationItemModel : ", e);
}
}
}
}
}