/* * Copyright (C) 2005-2007 Alfresco Software Limited. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * As a special exception to the terms and conditions of version 2.0 of * the GPL, you may redistribute this Program in connection with Free/Libre * and Open Source Software ("FLOSS") applications as described in Alfresco's * FLOSS exception. You should have recieved a copy of the text describing * the FLOSS exception, and it is also available here: * http://www.alfresco.com/legal/licensing */ package org.alfresco.linkvalidation; import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Object representing the result of a link validation action being executed. * This object combines the results of the multiple service calls required to * detect broken links and retrieve them. *

* This object is then typically added to the store being checked as a store * property. *

* * @author gavinc */ public class LinkValidationReport implements Serializable { private int numberFilesChecked = 0; private int numberLinksChecked = 0; private int numberBrokenLinks = 0; private boolean successful = true; private Throwable error; private List brokenFiles; private Map brokenLinksByFile; private static final long serialVersionUID = 7562964706845609991L; /** * Constructs a link validation report from the results of a check * * @param status The object containing status i.e. file, link counts and the list * of files containing broken links * @param manifests The manifest of broken links and files */ public LinkValidationReport(HrefValidationProgress status, List manifests) { this.numberFilesChecked = status.getFileUpdateCount(); this.numberLinksChecked = status.getUrlUpdateCount(); // create a list of broken files this.brokenFiles = new ArrayList(manifests.size()); // create a map of broken links by file. this.brokenLinksByFile = new HashMap(manifests.size()); // build the required list and maps for (HrefManifest manifest : manifests) { String fileName = manifest.getFileName(); this.brokenFiles.add(fileName); this.brokenLinksByFile.put(fileName, manifest); this.numberBrokenLinks = this.numberBrokenLinks + manifest.getHrefs().size(); } } /** * Constructs a link validation report from an error that occurred * * @param error The error that caused the link check to fail */ public LinkValidationReport(Throwable error) { this.setError(error); this.brokenFiles = Collections.emptyList(); this.brokenLinksByFile = Collections.emptyMap(); } public int getNumberFilesChecked() { return this.numberFilesChecked; } public int getNumberLinksChecked() { return this.numberLinksChecked; } public int getNumberBrokenFiles() { return this.brokenFiles.size(); } public int getNumberBrokenLinks() { return this.numberBrokenLinks; } public List getFilesWithBrokenLinks() { return this.brokenFiles; } public List getBrokenLinksForFile(String file) { List links = null; HrefManifest manifest = this.brokenLinksByFile.get(file); if (manifest != null) { links = manifest.getHrefs(); } return links; } public boolean wasSuccessful() { return this.successful; } public void setError(Throwable error) { this.error = error; this.successful = false; } public Throwable getError() { return this.error; } }