From 87d9c58aa473ad04bd7ebe95ae8590435e3290ad Mon Sep 17 00:00:00 2001
From: Jan Lemmer <jan.lemmer@fst.tu-darmstadt.de>
Date: Tue, 3 Aug 2021 09:15:20 +0200
Subject: [PATCH] Centralized is working

---
 .gitignore                  |   4 ++++
 example.m                   |  10 +++++++++-
 fcn_core/Publish.m          |  22 ++++++++++++++--------
 fcn_help/FileCompare.m      |  18 ++++++++++++------
 fcn_help/createLinkedHDF5.m |  21 ++++++++++-----------
 test_data.mat               | Bin 1535 -> 1531 bytes
 testdata_2.h5               | Bin 3064 -> 3064 bytes
 7 files changed, 49 insertions(+), 26 deletions(-)

diff --git a/.gitignore b/.gitignore
index b0afd48..7604078 100644
--- a/.gitignore
+++ b/.gitignore
@@ -28,5 +28,9 @@ codegen/
 test*.m
 export/*
 
+# files that are crfeated in example.m
+testdata_2.h5
+test_data.mat
+
 # Octave session info
 octave-workspace
diff --git a/example.m b/example.m
index 45c7e39..e803c2b 100644
--- a/example.m
+++ b/example.m
@@ -58,5 +58,13 @@ path.script = mfilename('fullpath'); % filename of the m.script
 path.rdata =  {dataset1,dataset2} ; % don't forget the extension
 
 
-Publish(path, ID, figs, 'Location', 'local','Method','individual','CopyUserFCN',true)
+Publish(path, ID, figs, 'Location', 'local','Method','centraliced','CopyUserFCN',true)
 
+% Second Plot to test centralized method
+
+fig(2) =figure;
+plot(x,y,'-k');
+hold on
+plot(x1,y1,'-r');
+
+Publish(path, ID, figs, 'Location', 'local','Method','centraliced','CopyUserFCN',true)
\ No newline at end of file
diff --git a/fcn_core/Publish.m b/fcn_core/Publish.m
index c970e7d..ebff3ca 100644
--- a/fcn_core/Publish.m
+++ b/fcn_core/Publish.m
@@ -58,11 +58,14 @@ switch options.Method
         end
         % Check if the new plot is based on the original data-set    
             % copy the data(once)
-        for i=1:numel(DataPaths.rdata)
-            if fileCompare(DataPaths.rdata{i},{fList.name}) % identical file exists
-               createLinkedHDF5(DataPaths.rdata{i},storPath,ID)
+        for i=1:numel(DataPaths.rdata)            
+            % check if identical file exists (status = 1)
+            [status, id] = fileCompare(DataPaths.rdata{i},fList);
+            if status
+               sourcePath = fullfile(fList(id).folder, fList(id).name);
+               createLinkedHDF5(sourcePath,storPath,ID);
             else % no identical file exists
-               createFileCopy(DataPaths.rdata{i},'data',storPath,ID,'data');
+               createFileCopy(DataPaths.rdata,'data',storPath,ID,'dataCentral');
             end
         end
     case 'individual'
@@ -93,7 +96,7 @@ function [] = createFileCopy(filePaths,folderName,storPath,ID,type)
 % folderName is the name of the exporting folder
     disp(['Start to copy ', type]);  
             
-    try        
+%     try        
         for i = 1:numel(filePaths)
             FileNameAndLocation = filePaths{i};
             [~,name,ext] = fileparts(filePaths{i}); % get the extension
@@ -102,6 +105,9 @@ function [] = createFileCopy(filePaths,folderName,storPath,ID,type)
                 case 'data'
                     sufix = '_data';
                     newfile = sprintf([ID, sufix, '_' , num2str(i) ,ext]);
+                case 'dataCentral'
+                    %keep original name
+                    newfile = sprintf([name,ext]);
                 case 'script'
                     sufix = '_script';
                     newfile = sprintf([ID, sufix ,ext]);
@@ -117,9 +123,9 @@ function [] = createFileCopy(filePaths,folderName,storPath,ID,type)
             copyfile(FileNameAndLocation,RemotePath);
         end
         disp([type, ' sucessfully published']);
-    catch
-        warning([type,' export was not sucessful'])
-   end %try
+%     catch
+%         warning([type,' export was not sucessful'])
+%    end %try
 end
 
 function tf = mustBeFigure(h)
diff --git a/fcn_help/FileCompare.m b/fcn_help/FileCompare.m
index 325cfe5..5a4039d 100644
--- a/fcn_help/FileCompare.m
+++ b/fcn_help/FileCompare.m
@@ -4,27 +4,33 @@ function [status, id] = fileCompare(filename,fileList)
 % the functions uses the windows system function fc or the unix function
 % diff
 
-%% Not working!!!
+if isempty(fileList)
+   % no comparison necessary
+    status =false;
+    return
+end
 
 [~,~,ext1] = fileparts(filename); 
 id = zeros(numel(fileList),1);
 
 for i=1:numel(fileList)
-    [~,~,ext2] = fileparts(fileList{i});
+    [~,~,ext2] = fileparts(fileList(i).name);
 
     if ~isequal(ext1,ext2)
         %warning('File extension are not identical');
         status = false;
-        return
+        continue
     end
 
+    filepath = fullfile(fileList(i).folder,fileList(i).name);
     if ispc
-        [status,~] = system(['fc ' filename ' ' fileList{i}]);
+        [status,~] = system(['fc ' filename ' ' filepath]);
         % 0 -> identical, 1 -> not identical
-         id(i) = ~status; % false (not identical), true(identical)
+         status = ~status; % false (not identical), true(identical)
+         id(i) = status;
           
     elseif isunix %untested!
-        [status,~] = system(['diff ' filename ' ' fileList{i}]);
+        [status,~] = system(['diff ' filename ' ' filepath]);
         id(i) = ~status; % ???
     else
         warning('Platform not supported')
diff --git a/fcn_help/createLinkedHDF5.m b/fcn_help/createLinkedHDF5.m
index f2d2574..6564a7c 100644
--- a/fcn_help/createLinkedHDF5.m
+++ b/fcn_help/createLinkedHDF5.m
@@ -1,21 +1,20 @@
 function [status] = createLinkedHDF5(SourceFile,TargetPath,ID)
-%UNTITLED4 Summary of this function goes here
-%   Detailed explanation goes here
+%createLinkedHDF5 creates a HDF file that references the Sourcefile
+%   TargetPath is the STorage Location, ID the Foldername
+%   Status returns true if the function was sucessfull
 
 plist_id = 'H5P_DEFAULT';
 
-% Work in Progress... Problem mit dem Pfad...
-
-%try
-    fid = H5F.create(fullfile(TargetPath,[ID,'_data.h5']));
+try
+    fid = H5F.create(fullfile(TargetPath,ID,[ID,'_data.h5']));
     %create External Link to Sourcefile in the Group linkToExternal
-    H5L.create_external(SourceFile,'/',fid, SourceFile ,plist_id,plist_id);
+    H5L.create_external(['..\data\',SourceFile],'/',fid, SourceFile ,plist_id,plist_id);
     H5F.close(fid);
     status = 1;
-% catch
-%     warning('No linked HDF file was created');
-%     status = 0;
-% end
+catch
+    warning('No linked HDF file was created');
+    status = 0;
+end
 
 end
 
diff --git a/test_data.mat b/test_data.mat
index 773ad46e46d0a3ab0dac6b68c057827c4ecaf9de..1d2004a11e0bf276402abe32cc62b6ed99f7e475 100644
GIT binary patch
delta 894
zcmey*{hND&g@|Kmx`KkSf`O%#p^24|v4W9-k>SKZ<%tQb8%s=?>iw7*7%JxIPOSC`
zE|)p_{{6lCd#8U|5m3{^>bSN)<JB^^aJBxqoef<Mof=&lD>m@7CnZi>bV8(1Sfpo*
zQpXC`-iQya9BjtiJ6;;tNkq0xUBP0?xQxYY(Uj%abMHTSGI{d*pRZ*s4;x7JC9-su
zovHs*@#p_MkFMX-TRbOgOg5?aJ$2i^;`Qnq=My`9ODi4~ifvcUvf3=llDEw>+Gib0
z@!D&vkEJmBy;MB9wOd1P-DlmZS=x_g%Q>%hpWb2jeU4JBK>N+b_PG%jCk`Flym;}3
znFrkO)<)LPaZXKk+j_l3?9jJ+yOvIsdB!Rg>-Wk+V$$W{yj`0Nmdd@!D^|Sm-L?KV
zU$RL1)!BQjWuJ=7uPA$YwN+=;|5@)}Zf|$52zv7JeSd+)ot(<Ylg}+oFHY<IUB!6S
z{Ma`A-+>48xA&xGuW0zd8ecEIUQnTX?HQdEO|g`<pB`-yVg9Kb`CX=B&eC=6>;4>j
z5O>k~=$h{=)4I9@K22Lxe(LA8J+V4A)BIm<J5w)UaChaDH6fcMq<Z#WTADb)(x$3D
znWua4>$vxxUJDK4{+F)W8P}rc{O$LwW*e5(|25ZJ+lZxRPTPAa_=b4D9%r=Q#}!#G
zj>IV~T3Pz0^|KD2@Vgl4?*_#goE(>y&gNXSM|e;CY1S$JuZk_jogaRyOi0PM?q<$>
zw(Ijzn=A7I>-nz783cUo|B`NPm~dJxi|Kvv8IywfeXJj5)Mn&1ZS7f<ez|w{F$KY&
zk4p<JCs(G}l-=8#XxRFD_5Q#1-)hV)^&dRk&ZD&Wdiag4pH~D`2<~lra8mWR+7HkF
z54l4Z2A%s^R2uE2<GOC=|A;Ua*QgH<xGGmPe0w;Z_dgHEjj37nWp8414{R~f$ct|7
zkSX3-KXKZEW%gfx8n5jzXx`-@e^%iK|Lmn-c@Lhq{?R1K#g?gd_S_K(xo+oU*-!T=
zEh?Tp(?Gek{m<sw=)W9mteSuMdnMk^nI1da*)aWo$H|I@1^Vmbj0+~YdRJCV-qz>-
zSoK?KjnYx4&08(}JU{r|d=X)hbl&mj)hF^HT6}`<Q@?)p((t<Lm9zc1fkthC&W_JK
zM=$>=j@K&h{;+a`&)W@N)orV;Wi6E}N%quSwp)p7-SiyEdcC*THeX%1xbb*EPDYc?
L#G~wC5zaFJvYENt

delta 898
zcmey({hxb+g@{*aj)IZ7f}x?6sfCq^k%Ezdk>SKZ<%tQb8%s=?>VudW7%JxIPO9~}
zQYv$N|Ni^mzyJOFBt_&^7Aw<Ig=ELp3WKc`tIzr{2A(SlZ#aI@X|eUXcIo9ElSTa2
zv6sK_nCJ9tuCjj30o9FuvQt^Dvg9QEnZ%XMJC48k<g_rJfBxIO*X?fq?*IOLuRnvL
z%2XkxQ!x(z9@`)Oci%Gd=Ko3c%4##~HXTZ-KT=%WYGu!LU+lc~``R;$BX7RH!t3d=
zbG7Zw%9)8fSLS^@CDOHY|BAQ8Ygv9yv-`Zxu}xWTs?s~owz!_>YxLAL{wcmZ$gA(z
zbWMEER`;f-Nqf&fSRC+b{aUF`wTj0cZ*IBB9&Bv>*S5%j?{f0P+PM#fzLkIBKT}`t
zdr?gKn`3Mv!|Q*Sgl^k%9er4;xGt#a%kE=qXGw7C>gxobUG^cPWR1uVQJXiZADic`
zX4<u>{QCTi<r`GZ*j3JdII&uA$!C3|DfZSYuE<X*c=)$(ulio5PrJU?Zp>rmpM6ha
zh0W22&zhD!n=2pG!X1`hZFBHy{vF|+ds<e?26ESbzROg1HZSN;;AuzeGW$ikK?mk~
zi~W_dtnaPLEIhq|Be=Npl_vMmV{g}#RZnZ^nLBwE=Vk`k-M0VMH7f3Us(<z4ZyO!f
z(3z*Anm+wn5<0c4>;4}l^)yqKgSR?-_xBrwY_VFuV-n}5X||X5?(}PVyxiSp_c95#
zeM<BB<R@&XT2#MXN7<v{#m=}HmggR}X?{38N7W`NT9@0j+r{SRtqVK9NOBtA&)qzu
zx}xUy%_*zeJ3FlV6nbYL*jnBD_mnB)%CyS`>l>9`+<W}IYnMdczZnT~RXy#?7c5g*
z)q0?;<kzOHlOBm)U$~}Gpv~s#qaIsEnN@E3OSA2kuh^RQEUqX0N4<uI$<Lat9L_IU
z3vZoB*89HJT$EGf-iPVG+{I4*o#|A%R+K04oZ<4SNzTc?=lA;S3trrM-r_^?tUvL`
zoO92sf4E_j@1gTaJz&o%yOT4Y2QK4Vxi8e?qPXxY@#W7qzASydk?p4a_PVgwGad;%
zsD0tBJw+hs&)?hWca)eSP2**JV-!=*nv|3Wy~&+nCtMTZP%wG_RZFjnGiJG+QmPD*
z?JcvHn3{0E;FR>#^ACT`J2_pp+(qT<oV|B9&P%9F@k#xjDcARLmit%!r@OCniGJ0V
Su(+*zm(#R;KV#vYU<m-0E52(0

diff --git a/testdata_2.h5 b/testdata_2.h5
index 7891e47e55667d2dcbf9db26acca2fd6512ddf8a..79061fbf1d4dd06ed63a1e4d321d212bdb137e76 100644
GIT binary patch
delta 31
kcmew%{zH7j9%h#FZ#WV+A7Bn)1hXa|U@q9)!CJru0OOGjB>(^b

delta 31
kcmew%{zH7j9%hzHH~uGVKENEp2xd(_z+AAogSCJS001Tq?*IS*

-- 
GitLab