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 }