13 #include <osl/file.hxx>
24 const sal_Int32
nIndex(rSrc.lastIndexOf(aToken));
34 aRetval = rSrc.copy(0,
nIndex);
36 if (rSrc.getLength() >
nIndex + 1)
38 rRight = rSrc.copy(
nIndex + 1);
47 if (!rBaseURL.isEmpty())
49 FileSharedPtr aBaseFile = std::make_shared<osl::File>(rBaseURL);
51 return (osl::File::E_None == aBaseFile->open(osl_File_OpenFlag_Read));
59 if (!rDirURL.isEmpty())
61 osl::Directory aDirectory(rDirURL);
63 return (osl::FileBase::E_None == aDirectory.open());
70 std::set<std::pair<OUString, OUString>>& rFiles)
72 if (rDirURL.isEmpty())
75 osl::Directory aDirectory(rDirURL);
77 if (osl::FileBase::E_None != aDirectory.open())
80 osl::DirectoryItem aDirectoryItem;
82 while (osl::FileBase::E_None == aDirectory.getNextItem(aDirectoryItem))
84 osl::FileStatus aFileStatus(osl_FileStatus_Mask_Type | osl_FileStatus_Mask_FileURL
85 | osl_FileStatus_Mask_FileName);
87 if (osl::FileBase::E_None == aDirectoryItem.getFileStatus(aFileStatus))
89 if (aFileStatus.isDirectory())
91 const OUString aFileName(aFileStatus.getFileName());
93 if (!aFileName.isEmpty())
95 rDirs.insert(aFileName);
98 else if (aFileStatus.isRegular())
100 OUString aFileName(aFileStatus.getFileName());
104 if (!aFileName.isEmpty())
106 rFiles.insert(std::pair<OUString, OUString>(aFileName, aExtension));
115 std::set<OUString> aDirs;
116 std::set<std::pair<OUString, OUString>> aFiles;
121 for (
const auto& dir : aDirs)
123 const OUString aNewDirURL(rDirURL +
"/" + dir);
128 for (
const auto& file : aFiles)
130 OUString aNewFileURL(rDirURL +
"/" + file.first);
132 if (!file.second.isEmpty())
134 aNewFileURL +=
"." + file.second;
146 std::u16string_view rTargetDirURL,
147 const std::set<OUString>& rExcludeList)
149 std::set<OUString> aDirs;
150 std::set<std::pair<OUString, OUString>> aFiles;
155 for (
const auto& dir : aDirs)
157 const bool bExcluded(!rExcludeList.empty() && rExcludeList.find(dir) != rExcludeList.end());
161 const OUString aNewSourceDirURL(rSourceDirURL +
"/" + dir);
165 const OUString aNewTargetDirURL(OUString::Concat(rTargetDirURL) +
"/" + dir);
172 bError |= (osl::FileBase::E_None
173 != osl::File::move(aNewSourceDirURL, aNewTargetDirURL));
178 for (
const auto& file : aFiles)
180 OUString aSourceFileURL(rSourceDirURL +
"/" + file.first);
182 if (!file.second.isEmpty())
184 aSourceFileURL +=
"." + file.second;
189 OUString aTargetFileURL(OUString::Concat(rTargetDirURL) +
"/" + file.first);
191 if (!file.second.isEmpty())
193 aTargetFileURL +=
"." + file.second;
201 bError |= (osl::FileBase::E_None != osl::File::move(aSourceFileURL, aTargetFileURL));
OUStringBuffer & remove(OUStringBuffer &rIn, sal_Unicode c)
Removes all occurrences of a character from within the source string.
static bool fileExists(const OUString &rBaseURL)
std::shared_ptr< osl::File > FileSharedPtr
static OUString splitAtLastToken(const OUString &rSrc, sal_Unicode aToken, OUString &rRight)
static bool moveDirContent(const OUString &rSourceDirURL, std::u16string_view rTargetDirURL, const std::set< OUString > &rExcludeList)
static void scanDirsAndFiles(const OUString &rDirURL, std::set< OUString > &rDirs, std::set< std::pair< OUString, OUString >> &rFiles)
static bool deleteDirRecursively(const OUString &rDirURL)
static bool dirExists(const OUString &rDirURL)