Rev | Line | |
---|
[5] | 1 | %ISVALIDMETA meta validity check for datasets |
---|
| 2 | % |
---|
| 3 | % I=ISVALIDMETA(A,KEYS) |
---|
| 4 | % |
---|
| 5 | % INPUT |
---|
| 6 | % A input dataset |
---|
| 7 | % KEYS (opt) name or cell array with names of required meta keys |
---|
| 8 | % |
---|
| 9 | % OUTPUT |
---|
| 10 | % I logical output: the dataset is/is not valid |
---|
| 11 | % |
---|
| 12 | % DESCRIPTION |
---|
| 13 | % This function validates if the dataset contains meta capability i.e. |
---|
| 14 | % can store additional named sets of identifiers for each object. |
---|
| 15 | % The metalist containing the names of ident columns is stored in the |
---|
| 16 | % dataset user field. If a name or a cell array with column names is |
---|
| 17 | % supplied in KEYS parameter, these are checked for existence. |
---|
| 18 | |
---|
| 19 | function i=isvalidmeta(a,inkeys) |
---|
| 20 | |
---|
| 21 | if ~exist('inkeys','var'), inkeys=[]; end |
---|
| 22 | if ischar(inkeys), inkeys={inkeys}; end |
---|
| 23 | |
---|
| 24 | isdataset(a); |
---|
| 25 | |
---|
| 26 | i=0; |
---|
| 27 | user=a.user; |
---|
| 28 | if isfield(user,'meta') |
---|
| 29 | t=user.meta; |
---|
| 30 | if isstruct(t) & isfield(t,'keys') & iscell(t.keys) & isfield(t,'values') & iscell(t.values) |
---|
| 31 | i=1; |
---|
| 32 | end |
---|
| 33 | end |
---|
| 34 | |
---|
| 35 | if (nargout == 0) & (i == 0) |
---|
| 36 | error(['Dataset with meta structure in user field expected. Use help enablemeta for details.']) |
---|
| 37 | end |
---|
| 38 | |
---|
| 39 | % validate the required keys, if supplied |
---|
| 40 | if ~isempty(inkeys) |
---|
| 41 | for j=1:length(inkeys) |
---|
| 42 | if ~any(strcmp(user.meta.keys,inkeys{j})) |
---|
| 43 | i=0; |
---|
| 44 | if (nargout == 0) & (i == 0) |
---|
| 45 | error(['required key ''' inkeys{j} ''' is not present in a dataset']); |
---|
| 46 | end |
---|
| 47 | end |
---|
| 48 | end |
---|
| 49 | end |
---|
| 50 | |
---|
| 51 | |
---|
| 52 | return |
---|
| 53 | |
---|
Note: See
TracBrowser
for help on using the repository browser.