001 /*
002 * Sonar, open source software quality management tool.
003 * Copyright (C) 2008-2012 SonarSource
004 * mailto:contact AT sonarsource DOT com
005 *
006 * Sonar is free software; you can redistribute it and/or
007 * modify it under the terms of the GNU Lesser General Public
008 * License as published by the Free Software Foundation; either
009 * version 3 of the License, or (at your option) any later version.
010 *
011 * Sonar is distributed in the hope that it will be useful,
012 * but WITHOUT ANY WARRANTY; without even the implied warranty of
013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014 * Lesser General Public License for more details.
015 *
016 * You should have received a copy of the GNU Lesser General Public
017 * License along with Sonar; if not, write to the Free Software
018 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
019 */
020 package org.sonar.batch.index;
021
022 import org.sonar.api.batch.Event;
023 import org.sonar.api.database.model.Snapshot;
024 import org.sonar.api.design.Dependency;
025 import org.sonar.api.measures.Measure;
026 import org.sonar.api.resources.Project;
027 import org.sonar.api.resources.ProjectLink;
028 import org.sonar.api.resources.Resource;
029 import org.sonar.api.resources.ResourceUtils;
030
031 import java.util.List;
032
033 public final class DefaultPersistenceManager implements PersistenceManager {
034
035 private ResourcePersister resourcePersister;
036 private SourcePersister sourcePersister;
037 private MeasurePersister measurePersister;
038 private DependencyPersister dependencyPersister;
039 private LinkPersister linkPersister;
040 private EventPersister eventPersister;
041
042 public DefaultPersistenceManager(ResourcePersister resourcePersister, SourcePersister sourcePersister,
043 MeasurePersister measurePersister, DependencyPersister dependencyPersister,
044 LinkPersister linkPersister, EventPersister eventPersister) {
045 this.resourcePersister = resourcePersister;
046 this.sourcePersister = sourcePersister;
047 this.measurePersister = measurePersister;
048 this.dependencyPersister = dependencyPersister;
049 this.linkPersister = linkPersister;
050 this.eventPersister = eventPersister;
051 }
052
053 public void clear() {
054 resourcePersister.clear();
055 sourcePersister.clear();
056 }
057
058 public void setDelayedMode(boolean b) {
059 measurePersister.setDelayedMode(b);
060 }
061
062 public void dump() {
063 measurePersister.dump();
064 }
065
066 public void saveProject(Project project, Project parent) {
067 resourcePersister.saveProject(project, parent);
068 }
069
070 public Snapshot saveResource(Project project, Resource resource, Resource parent) {
071 if (ResourceUtils.isPersistable(resource)) {
072 return resourcePersister.saveResource(project, resource, parent);
073 }
074 return null;
075 }
076
077 public void setSource(Resource file, String source) {
078 sourcePersister.saveSource(file, source);
079 }
080
081 public String getSource(Resource resource) {
082 return sourcePersister.getSource(resource);
083 }
084
085 public void saveMeasure(Resource resource, Measure measure) {
086 if (ResourceUtils.isPersistable(resource)) {
087 measurePersister.saveMeasure(resource, measure);
088 }
089 }
090
091 public Measure reloadMeasure(Measure measure) {
092 return measurePersister.reloadMeasure(measure);
093 }
094
095 public void saveDependency(Project project, Dependency dependency, Dependency parentDependency) {
096 if (ResourceUtils.isPersistable(dependency.getFrom()) && ResourceUtils.isPersistable(dependency.getTo())) {
097 dependencyPersister.saveDependency(project, dependency, parentDependency);
098 }
099 }
100
101 public void saveLink(Project project, ProjectLink link) {
102 linkPersister.saveLink(project, link);
103 }
104
105 public void deleteLink(Project project, String key) {
106 linkPersister.deleteLink(project, key);
107 }
108
109 public List<Event> getEvents(Resource resource) {
110 return eventPersister.getEvents(resource);
111 }
112
113 public void deleteEvent(Event event) {
114 eventPersister.deleteEvent(event);
115 }
116
117 public void saveEvent(Resource resource, Event event) {
118 if (ResourceUtils.isPersistable(resource)) {
119 eventPersister.saveEvent(resource, event);
120 }
121 }
122 }