using System; using System.Collections.Generic; using System.Text; using OSGeo.MapGuide.ObjectModels.LoadProcedure; namespace OSGeo.MapGuide.MaestroAPI.Resource.Validation { /// /// Base class of all load procedure validations. Provides common load procedure validation /// logic. /// public abstract class BaseLoadProcedureValidator : IResourceValidator { /// /// Gets the resource type and version this validator supports /// /// public abstract ResourceTypeDescriptor SupportedResourceAndVersion { get; } /// /// Validats the specified resources for common issues associated with this /// resource type /// /// /// /// /// public virtual ValidationIssue[] Validate(ResourceValidationContext context, IResource resource, bool recurse) { if (!resource.GetResourceTypeDescriptor().Equals(this.SupportedResourceAndVersion)) return null; return ValidateBase(context, resource, recurse); } /// /// Performs base validation logic /// /// /// /// /// protected static ValidationIssue[] ValidateBase(ResourceValidationContext context, IResource resource, bool recurse) { Check.NotNull(context, "context"); //NOXLATE if (context.IsAlreadyValidated(resource.ResourceID)) return null; if (resource.ResourceType != OSGeo.MapGuide.MaestroAPI.ResourceTypes.LoadProcedure) return null; if (resource.ResourceVersion != new Version(1, 0, 0)) return null; var set = new ValidationResultSet(); var loadProc = (resource as ILoadProcedure).SubType; if (loadProc.Type == LoadType.Dwg) { set.AddIssue(new ValidationIssue(resource, ValidationStatus.Warning, ValidationStatusCode.Warning_LoadProcedure_DwgNotSupported, Strings.LPROC_DWGNotSupported)); return set.GetAllIssues(); //all she wrote } if (loadProc.Type == LoadType.Raster) { set.AddIssue(new ValidationIssue(resource, ValidationStatus.Warning, ValidationStatusCode.Warning_LoadProcedure_RasterNotSupported, Strings.LPROC_RasterNotSupported)); return set.GetAllIssues(); //all she wrote } if (loadProc.Type == LoadType.Sdf) { set.AddIssue(new ValidationIssue(resource, ValidationStatus.Warning, ValidationStatusCode.Warning_LoadProcedure_Sdf2OptionsNotSupported, Strings.LPROC_Sdf2OptionsNotSupported)); set.AddIssue(new ValidationIssue(resource, ValidationStatus.Warning, ValidationStatusCode.Warning_LoadProcedure_GeneralizationNotSupported, Strings.LPROC_GeneralizationNotSupported)); } if (loadProc.Type == LoadType.Shp) { set.AddIssue(new ValidationIssue(resource, ValidationStatus.Warning, ValidationStatusCode.Warning_LoadProcedure_ConvertToSdf3NotSupported, Strings.LPROC_ConvertToSdf3NotSupported)); set.AddIssue(new ValidationIssue(resource, ValidationStatus.Warning, ValidationStatusCode.Warning_LoadProcedure_GeneralizationNotSupported, Strings.LPROC_GeneralizationNotSupported)); } if (loadProc.Type == LoadType.Sqlite) { set.AddIssue(new ValidationIssue(resource, ValidationStatus.Warning, ValidationStatusCode.Warning_LoadProcedure_GeneralizationNotSupported, Strings.LPROC_GeneralizationNotSupported)); } var fproc = loadProc as IBaseLoadProcedure; if (fproc != null) { foreach (var fn in fproc.SourceFile) { if (!System.IO.File.Exists(fn)) { set.AddIssue(new ValidationIssue(resource, ValidationStatus.Warning, ValidationStatusCode.Warning_LoadProcedure_SourceFileNotFound, string.Format(Strings.LPROC_SourceFileNotFound, fn))); } } } context.MarkValidated(resource.ResourceID); return set.GetAllIssues(); } } }