/******************************************************************************* * Copyright [2015] [Onboard team of SERC, Peking University] * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *******************************************************************************/ package com.onboard.service.sampleProject.impl; import java.io.File; import java.io.IOException; import java.util.List; import org.codehaus.jackson.JsonParseException; import org.codehaus.jackson.map.JsonMappingException; import org.codehaus.jackson.map.ObjectMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.core.io.Resource; import org.springframework.stereotype.Service; import com.onboard.domain.model.Discussion; import com.onboard.domain.model.Project; import com.onboard.domain.model.Todo; import com.onboard.domain.model.Todolist; import com.onboard.domain.model.User; import com.onboard.domain.transform.ProjectTransform; import com.onboard.service.collaboration.AttachmentService; import com.onboard.service.collaboration.DiscussionService; import com.onboard.service.collaboration.ProjectService; import com.onboard.service.collaboration.TodoService; import com.onboard.service.collaboration.TodolistService; import com.onboard.service.sampleProject.SampleProjectService; import com.onboard.service.sampleProject.model.SampleProject; import com.onboard.service.upload.UploadService; /** * {@link com.onboard.plugin.sampleProject.SampleProjectService} Service * * @author xingliang * */ @Service("sampleProjectServiceBean") public class SampleProjectServiceImpl implements SampleProjectService { @Autowired ProjectService projectService; @Autowired DiscussionService discussionService; @Autowired TodolistService todolistService; @Autowired TodoService todoService; @Autowired UploadService uploadService; @Autowired AttachmentService attachmentService; @Autowired ApplicationContext applicationContext; public static final Logger logger = LoggerFactory.getLogger(SampleProjectServiceImpl.class); private static final String RESOURCE_PATH = "com/onboard/service/service/sampleProject/impl/"; private static final String JSON_NAME = "sample-project.json"; @Override public void createSampleProjectByCompanyId(Integer companyId, User creator) { try { ObjectMapper mapper = new ObjectMapper(); Resource[] resource = applicationContext.getResources(String.format("classpath*:**%s**", RESOURCE_PATH + JSON_NAME)); if (resource == null || resource.length == 0) { logger.error("sampleProject.json is not exist"); return; } File json = resource[0].getFile(); SampleProject sample = mapper.readValue(json, SampleProject.class); Project project = sample.getSampleProject(); project.setCompanyId(companyId); project.setCreatorId(creator.getId()); project = projectService.createProject(ProjectTransform.projectToProjectDTO(project)); // 示例discussion for (Discussion discussion : sample.getSampleDiscussions()) { discussion.setCompanyId(companyId); discussion.setProjectId(project.getId()); discussion.setCreatorId(creator.getId()); discussion.setCreatorName(creator.getName()); discussionService.create(discussion); } // 示例todo和todolist List<Todolist> todolists = sample.getSampleTodolists(); for (Todolist todolist : todolists) { todolist.setCompanyId(companyId); todolist.setProjectId(project.getId()); todolist.setCreatorId(creator.getId()); todolist.setCreatorName(creator.getName()); todolist = todolistService.create(todolist); for (Todo todo : todolist.getTodos()) { todo.setCompanyId(companyId); todo.setProjectId(project.getId()); todo.setTodolistId(todolist.getId()); todo.setCreatorId(creator.getId()); todo.setCreatorName(creator.getName()); todo.setPosition(0.0); todo.setTodoType("task"); todo.setPriority(1); todoService.create(todo); } } } catch (JsonParseException e) { logger.error("JsonParse failed when creating sampleProject"); } catch (JsonMappingException e) { logger.error("JsonMapping failed when creating sampleProject"); } catch (IOException e) { logger.error("cannot read sampleProject.json"); } } }