diff --git a/ShoulderCase/@ShoulderCaseLoader/ShoulderCaseLoader.m b/ShoulderCase/@ShoulderCaseLoader/ShoulderCaseLoader.m index 935c2af..f41f516 100644 --- a/ShoulderCase/@ShoulderCaseLoader/ShoulderCaseLoader.m +++ b/ShoulderCase/@ShoulderCaseLoader/ShoulderCaseLoader.m @@ -1,125 +1,111 @@ classdef ShoulderCaseLoader < handle properties (Access = private) normal pathological end methods function obj = ShoulderCaseLoader(varargin) dataRootPath = obj.getDataRootPath(varargin); obj.normal = CasesFinderNormal(dataRootPath); obj.pathological = CasesFinderPathological(dataRootPath); end function output = containsCase(obj,SCase) output = or( obj.normal.containsCase(SCase), obj.pathological.containsCase(SCase)); end function output = getNumberOfCases(obj) output = obj.normal.getNumberOfCases + obj.pathological.getNumberOfCases; end function output = isEmpty(obj) output = not((obj.getNumberOfCases > 0)); end function output = getAllNormalCasesIDs(obj) output = obj.normal.getAllCasesIDs; end function output = getAllPathologicalCasesIDs(obj) output = obj.pathological.getAllCasesIDs; end function output = getAllCasesIDs(obj) normalIDs = obj.normal.getAllCasesIDs; pathologicalIDs = obj.pathological.getAllCasesIDs; output = {}; for i = 1:obj.normal.getNumberOfCases output{end+1} = normalIDs{i}; end for i = 1:obj.pathological.getNumberOfCases output{end+1} = pathologicalIDs{i}; end end function output = loadCase(obj,SCase) if not(obj.containsCase(SCase)) output = []; return end output = ShoulderCase(SCase); container = obj.getContainerOf(SCase); pathToCase = container.getPathTo(SCase); caseMatlabFile = fullfile(pathToCase,'matlab','SCase.mat'); if exist(caseMatlabFile,'file') loaded = load(caseMatlabFile); if not(isfield(loaded,'SCase')) return end if not(isequal(class(loaded.SCase),'ShoulderCase')) return end output = loaded.SCase; return end end end methods (Access = private, Hidden = true) function output = getDataRootPath(obj,arguments) output = []; if isempty(arguments) - output = obj.getDataRootPathFromFile('config.txt'); - return + TextFileOrPath = 'config.txt'; elseif not(ischar(arguments{1})) return else TextFileOrPath = arguments{1}; end if endsWith(TextFileOrPath,'.txt') - output = obj.getDataRootPathFromFile(TextFileOrPath); + output = FileExtractor.getVariableFromTextFile('dataDir',TextFileOrPath); else output = TextFileOrPath; end end - function output = getDataRootPathFromFile(obj,configFile) - output = []; - if not(exist(configFile,'file')) - return - end - fid = fopen(configFile,'r'); - while and(isempty(output), not(feof(fid))) - line = fgetl(fid); - output = extractAfter(line,'dataDir = '); - end - fclose(fid); - end - function output = getContainerOf(obj,SCase) output = []; if obj.normal.containsCase(SCase) output = obj.normal; elseif obj.pathological.containsCase(SCase) output = obj.pathological; end end end end