Values for %ACTUAL_PATH% Alfresco filing path property - workflow

I would like a user to drop a file into a smart folder, have an aspect attached to it, and have the file stored in a folder in a different location.
I have followed the smart folders tutorial, and read the "Smart Folder Template syntax" page (here https://docs.alfresco.com/5.2/concepts/sf-ref-template-guidance.html). The examples I have found only ever show "%ACTUAL_PATH%" as the value for the path property.
What alternative values are possible for the path property of the filing rule? In the following example folder hierarchy, a user would drop a file into "General" and we would like the file stored in "Approved".
Example structure is:
Documents
-> Approved
-> Archived
-> Incoming
-> -> General (a smart folder)
I appreciate any help with this

You can use:
1) XPAth
"/app:company_home/cm:Docments/cm:Approved"
2) You can drop to any other folder with rule on it, to specify more complicated logic to sort created files

Related

Migrating from itext2 to itext7

Years ago, I wrote a small app in itext2 to gather reports on a weekly basis and concatenate them into one PDF. The app used com.lowagie.text.pdf.PdfCopy to copy and merge the PDFs. And it worked fine. Performed exactly as expected.
A few weeks ago I looked into migrating the application to itex7. To that end, I used the copyPagesTo method of com.itextpdf.kernel.pdf.PdfDocument. When run on the same file set, this produces warnings like:
WARN PdfNameTree - Name "section.1" already exists in the name tree; old value will be replaced by the new one.
When I click on the link to "section.1" in the first document of the merged PDF, I am taken to "section.1" of the last document. Not what I expected and not what happens when using the itext2 app. In the PDF's produced by itext2, if I click on the link to "section.1" of the first document in the combined PDF, I am taken to section 1 of the first document.
There is a hint in Javadocs for copyPagesTo saying
If outlines destination names are the same in different documents, all
such outlines will lead to a single location in the resultant
document. In this case iText will log a warning. This can be avoided
by renaming destinations names in the source document.
There is however, no explanation of how this should be done. I find it odd that this should be necessary in itext7, although it wasn't in itext2.
Is there a simple way to get around his problem?
I've also tried the Sejda desktop app and it produces correct results, but I would prefer to automate the process through a batch script.
My guess is iText 2 didn't even know it might be a problem.
If iText can't deduplicate destination names, the procedure is roughly:
Follow /Catalog -> /Names -> /Dests in each document to find the destination name tree.
Deduplicate the names, by adding suffixes. Remember that a name with a suffix added might be equal to an existing name in the same or another document. Be careful!
Now you can rewrite the destination name trees. Since you have only used suffixes, you can do this in place - the lexicographic ordering of the names is unaltered so the search tree structure is not broken.
Now, rewrite destination links in each PDF for the new names. For example any dictionary entry with key /Dest, or any /D in a /GoTo action.
Now, after all this preprocessing, the files will merge without name clashes.
(I know all this because I've just implemented it for my own PDF software. It's slightly hairy stuff, but not intractable.)
If you like, I can provide a devel version of cpdf with this functionality, if you would like to test it.

How to retrieve the original file name using PowerShell

Suppose I renamed multiple files by mistake and now I want change the file name as it was earlier.
example: The original name of file was “Test” through PowerShell we renamed it to “Tested” and again we want to retrieve the original name back and I don’t remember.
Unfortunately Windows doesn't store these information by default. You can enable auditing for a file (right click -> properties -> Security -> advanced -> auditing) to store these information in the future but right now, the answer is: It isn't possible.

Retrieving arbitrary Eclipse preferences programmatically

I am writing a plugin for Pig files. I would like to retrieve the Eclipse "file associations" preference - the one under General -> Editors -> File Associations -> File Types / Associated Editors.
Once I have this preference, my plugin can know which file types are being used, and act accordingly when iterating over the workspace files (in searches and the like).
I couldn't find a "directory" of preferences anywhere, nor an API that I could iterate over until I found it. Searching the file system of my workspace didn't seem to work either - possibly the preferences are being held in a binary format.
1) What is the key for retrieving this preference from the PreferenceStore?
2) What is the best way, in general, for finding the key for a given preference?
Use
IFileEditorMapping[] mapping = PlatformUI.getWorkbench().getEditorRegistry().getFileEditorMappings();
to get the mappings between file types and their supported editors. Look at this javadoc to see everything you could ever want to know about the mappings
I'll try to give you some hint, someone may have a better solution :
1 : id org.eclipse.ui.preferencePages.ContentTypes
2 : Use the Plug-ins Spy Press Alt-Shift-F1 on the desire page/widget on eclipse, it will display contextual informations
There is no overall API which will give you all the preferences.
Many preferences are stored in the workspace .metadata/.plugins/org.eclipse.core.runtime/.settings directory in 'plugin-id.prefs' files (Java Property file format). You can access these with
IEclipsePreferences prefs = InstanceScope.INSTANCE.getNode("plugin id");
String value = prefs.get("preference id", defaultValue);
So you need to know the id of the plugin that owns the preference and the id of the preference itself. This information can be difficult to find and may involve reading the source of the preference page.
Other preferences are stored in the Eclipse configuration directory. Yet others are in some format only known to a particular plugin (but there is usually some API to access the information).

How to exclude a directory in Stream mapping in p4v

I'm using the visual client for perforce and I want to exclude a directory from the workspace. Before streams, I would just navigate to my workspace, find the folder in the tree, and exclude it (and I've found this solution in a number of other related questions I've found). However, now that I am using a stream, it won't let me do this, i have to edit the stream mapping apparently.
So I tried to add this line to the remapped box when editing the stream:
-//NumberPlus/current/Library/... //nplus-mainline/current/Library/
However I just get an error:
Error in stream specification.
Error detected at line 24
Null directory (//) not allowed in '-//NumberPlus/current/Library/...'.
EDIT: I'm in Windows 8.1, for clarification.
If the folder you want to exclude is specific to your machine, setting P4IGNORE locally is the easiest way to exclude it from being added to the depot.
http://www.perforce.com/blog/120214/new-20121-p4ignore
You'd set P4IGNORE to some name like "p4ignore.txt", create a file with that name, and add "Libraries" to it -- subsequent "p4 add" commands will skip over paths found in the P4IGNORE file, so those files will never get added to the depot.
If this is something that's going to be common to all workspaces of this stream (e.g. it's a build artifact that everyone is going to generate and nobody is supposed to check in), what you want to do is add an "exclude" to the stream's Paths (this will exclude it from both branch views and client views generated by that stream). E.g.:
Paths:
share ...
exclude Libraries/...
The "exclude Libraries/..." is basically the same thing as the exclusion line you would add to the client view, except you specify it as a relative path, you don't need to specify both sides of the mapping, and the "-" is implied by the "exclude" type. The "remap" type is if you want to keep those files but in a different depot location, which doesn't sound applicable here.
More information on defining stream views:
http://www.perforce.com/perforce/doc.current/manuals/p4v/streams_views.html
You can't just edit the mappings for your client workspace if it is switched to a particular stream. The whole point of streams is that your workspace mapping is directly generated from the stream definition. So that's a feature.
It's not totally clear whether
you don't want the directory in the stream at all, or
it's valid to have the directory in the stream, but you don't want to sync it to your workstation, or
you want the directory sync'd to your workstation, but you want the directory to have different contents (say, from some other stream which has a different version of the library.
However, for all of these situations, I suspect the best path forward is to define a new child stream of your current stream.
You will want to define the path mappings using the "share", "exclude", "isolate", and "import" mapping types.
For example, if you just didn't want the Library/... directory at all, you'd "exclude" it from your parent.
Then that stream simply won't have that directory, and it (of course) won't be on your workstation when you sync to the stream, either.
If you wanted to have a different copy of the code in the Library/... directory, so that it became a point of intentional divergence from the parent, you'd "isolate" it from your parent to submit your own custom version, or "import" it from another stream to use that stream's Library/... directory instead.
In either case, the directory would be part of the stream, and would be sync'd to your workstation, but the contents of that directory would differ from the contents that are used in the parent stream (the exact way in which they'd differ is under your control, as you define the stream accordingly).
Documentation and some examples are here: http://www.perforce.com/perforce/doc.current/manuals/p4v/streams_views.html
and here:
http://www.perforce.com/sites/default/files/pdf/Streams-ebook.pdf
I believe I have solved this. To be clear, I wanted the folder to be completely ignored by version control. I'm using p4connect with Unity and it keeps wanting to include unnecessary stuff in my depot.
All I had to do was add this line to my parent stream in the Paths box:
exclude current/Library/...

Storing resources into "sub-bundle"?

I'd like to know if it is possible to store resources data into "sub-bundles" or "sub-packages" that I could put into my main AppBundle.
Indeed, I'd like to create a kind of player that reads "content packages", which are all organized the same way, with a standard hierarchical organization :
Package1:
- index.txt
- credits.txt
- Pictures/
-- Pic1.png
-- Pic2.png
- Movies/
-- intro.mov
-- outro.mov
My problem is that I can't find any way to make benefit of a hierarchical organisation into my Application package - I mean that I don't know how to distinguish "Folder1/index.txt" from "Folder2/index.txt", because I just use the "index.txt" identifier when I try to load the content of the file ...
I hope someone could help me, by the way I apologize for my poor english,
Cheers,
First, make sure that you're copying the files into subdirectories of Resources. One way to do this is to add your Package1 as a "folder reference" (select "Create Folder References" instead of "Recursively create groups" when you add it to the project). Another way to do it is to create a new Copy Files build action that copies the files into a subdirectory of Resources.
Once you've done that, you can use NSBundle's -pathForResource:ofType:inDirectory: to find the particular file you want. There's no need to go to the trouble of creating a sub-bundle (which is possible, but more complex).