wish list: quiet mode

14 views
Skip to first unread message

Hello World

unread,
Oct 19, 2011, 8:35:56 AM10/19/11
to mdcsvimporter
Hi;

It would be great if the file name is used for Account name if
matched.

It would be great if there is a quiet mode like: mdcsvimporter:
filename="file", fileformat="file format", dateformat="date format",
account="my account" which I like to use with importlist extension:
http://my-flow.github.com/importlist/

Thanks

Stashu

unread,
Oct 22, 2011, 2:31:13 PM10/22/11
to mdcsvi...@googlegroups.com, Hello World
Hi,

I hope you get this email.

I started working on this and I have the basics working.
This attached jar is beta15.3 and it should accept your arguments.
I think you might need to call the invoke method with the necessary uri
like:

filename="file":fileformat="file format":dateformat="date
format":importaccount="my account"

or I made it so you can leave off the enclosing " " like:
filename=filepath:fileformat=file format:dateformat=date
format:importaccount=my account

@Override
public void invoke( String uri )
{
StringTokenizer tokenizer = new StringTokenizer( uri, ":" );
HashMap argsHM = new HashMap();

I am not sure how you actually call other extensions.

If you do not want to get the importer jar file this way, let me know
and I can
put it here: http://code.google.com/p/mdcsvimporter/issues/detail?id=10

Thanks,
Stan Towianski

mdcsvimporter.mxt

Stashu

unread,
Oct 22, 2011, 6:23:34 PM10/22/11
to mdcsvi...@googlegroups.com, Hello World, impor...@my-flow.com
Hi,

I uploaded a new beta 15.3 jar file that you should be able to work with
and pass the arguments below to.

This is a new build that includes a custom configurable reader manager
so you can define your own readers. It also has other enhancements like
the ability to be called by the "Import List" extension to auto-process
a selected file.

http://code.google.com/p/mdcsvimporter/downloads/list

Stan Towianski


On 10/19/2011 08:35 AM, Hello World wrote:

Hello World

unread,
Oct 23, 2011, 4:12:20 AM10/23/11
to mdcsvimporter
HI Stan

Thanks for the quick respond to mdcsvimporter.

It would be nicer also if you could add command options for Securely
erase file after processing and Import Transactions as.

My goal (not achieve yet)
1: Auto select file name: almost there with importlist extension.
2: Auto select account name from file name: hard to get there as I
don't have java skill.
: a code need to add to importlist extension to get the file name
without path and without file extension.
: or :importaccount=auto:)

I did some investigation.

Here what I found with the new 15.3 of mdcsvimporter for the command
line options could need some little fine tuning:)

1: importlist extension returned the full path and file name to be
imported: eg: C:\moneydance\dat\import\usbank.csv
: because Windows have ":" in the drive path, mdcsvimporter displayed
error file not found.
: maybe no problem for other operating systems.
: so I have to change importlist extension source and recompiled to
use "./import/usbank.csv for this testing.

2: If no importaccount specified in the options, mdcsvimporter would
use the previous imported account.
: It should display the mdcsvimporter dialog instead.

: Also mdcsvimporter dialog displayed when no fileformat specified in
the options which is good and fileformat correctly selected, but date
format display was not grey out and incorrect displayed(not causing
any error during import)


I have no skill in Java, almost what so ever, I can edit text file,
follow logic that I have, and can compile.

Here what I changed to import list to work with mdcsvimporter for my
testing.

Source from:https://github.com/my-flow/importlist

File: resources\importlist.properties

From:
text_file_import_uri_prefix = moneydance:fmodule:txtimport:?file=
To:
text_file_import_uri_prefix =
moneydance:fmodule:mdcsvimporter:dateformat=DD/MM/
YY:fileformat=me:importaccount=Cash:filename=./dat/import/usbank.csv

File: io\FileAdmin.java

From:
callUri = this.prefs.getTextFileImportUriPrefix()
+ file.getAbsolutePath();
To:
callUri = this.prefs.getTextFileImportUriPrefix();

Then command ant to recompile importlist.

Here how I compiled mdcsvimporter from source, took me a while that I
had to delete private.key and public.key and regenerate them, this to
show how noob I am in java.

1: deleted private.key and public.key
2: ant genkeys
: type a password
:ant signs
3: Use Netbeans to open the project and run compile and put the
password from step 2:)


Thanks again Stan

Stashu

unread,
Oct 23, 2011, 10:51:50 AM10/23/11
to mdcsvi...@googlegroups.com, Hello World, impor...@my-flow.com
On 10/23/2011 04:12 AM, Hello World wrote:
> HI Stan
>
> Thanks for the quick respond to mdcsvimporter.
>
> It would be nicer also if you could add command options for Securely
> erase file after processing and Import Transactions as.
DONE
deletecsvfileflag&importtype="online|regular"
just including deletecsvfileflag makes it work.
importtype can be online or regular

>
> My goal (not achieve yet)
> 1: Auto select file name: almost there with importlist extension.
> 2: Auto select account name from file name: hard to get there as I
> don't have java skill.
> : a code need to add to importlist extension to get the file name
> without path and without file extension.
> : or :importaccount=auto:)
>
> I did some investigation.
>
> Here what I found with the new 15.3 of mdcsvimporter for the command
> line options could need some little fine tuning:)
>
> 1: importlist extension returned the full path and file name to be
> imported: eg: C:\moneydance\dat\import\usbank.csv
> : because Windows have ":" in the drive path, mdcsvimporter displayed
> error file not found.
> : maybe no problem for other operating systems.
> : so I have to change importlist extension source and recompiled to
> use "./import/usbank.csv for this testing.
DONE

//filename="file"&fileformat="file format"&dateformat="date
format"&importaccount="my account"
//deletecsvfileflag&importtype="online|regular"

I don't know if anyone else is calling mdcsvimporter like you are so I
changed the
delimiter to &. Will that work for you? I should have thought about :
in the windows filename :-)


> 2: If no importaccount specified in the options, mdcsvimporter would
> use the previous imported account.
> : It should display the mdcsvimporter dialog instead.

DONE.
This is a matter of preference though. For me I am always importing
into the same temporary account so it was ok for me, but I changed
it for now to the way you wanted it.

OK. There is a default for this for developers for mdcsvimporter,
but if you already got around it, good for you! I would have thought
that was a pain to figure out!
> Thanks again Stan
>
I will upload this version as beta15.4

Stan Towianski

Florian J. Breunig

unread,
Oct 23, 2011, 4:32:46 PM10/23/11
to mdcsvi...@googlegroups.com, Stashu, Hello World, impor...@my-flow.com
Hello Stan, hello World,

thank you for your message. As far as the Import List extension is concerned, it invokes the txtimport extension using the URI scheme moneydance:fmodule:txtimport:?file=/path/to/file/to/import, which is similar to the standard schemes given at http://moneydance.com/dev/urischeme. I parameterized the txtimport extension in build number 8 (see http://code.google.com/p/moneydance/source/list).

In my opinion, the Import List extension itself must *not* make any assumptions about which extension handles the import of CSV files. Rather, the user should decide on that by installing the CSV import extension of his/her choice. The Moneydance "framework" would then dispatch the "moneydance:fmodule:txtimport" call to the installed extension at runtime (i.e. either to the txtimport extension or to the mdcsvimporter extension).

Thus, I would suggest the mdcsvimporter extension complies with the existing "moneydance:fmodule:txtimport" URI scheme of the txtimport extension (and vice versa) with additional parameters. A universal URI scheme could look like this:

moneydance:fmodule:txtimport:?file=/path/to/file/to/import&fileformat=fileformat&dateformat=dateformat&importaccount=myaccount&deletecsvfile=1&importtype=online

The Import List extension (or any other caller) could fill in and pass the required parameters (such as the filename for now). Whatever CSV extension responds to the call is then responsible for handling (or ignoring) the parameters. The main advantage of this approach would be loose coupling of the extensions.

What do you think? More ideas?
Flow

Stashu

unread,
Oct 23, 2011, 10:34:00 PM10/23/11
to Florian J. Breunig, mdcsvi...@googlegroups.com, Hello World, impor...@my-flow.com
On 10/23/2011 04:32 PM, Florian J. Breunig wrote:
Hello Stan, hello World,

thank you for your message. As far as the Import List extension is concerned, it invokes the txtimport extension using the URI scheme moneydance:fmodule:txtimport:?file=/path/to/file/to/import, which is similar to the standard schemes given at http://moneydance.com/dev/urischeme. I parameterized the txtimport extension in build number 8 (see http://code.google.com/p/moneydance/source/list).

In my opinion, the Import List extension itself must *not* make any assumptions about which extension handles the import of CSV files. Rather, the user should decide on that by installing the CSV import extension of his/her choice. The Moneydance "framework" would then dispatch the "moneydance:fmodule:txtimport" call to the installed extension at runtime (i.e. either to the txtimport extension or to the mdcsvimporter extension).
I think so too. It could be a drop down or a radio button choice,
or if there is only one installed it could default to that one.

Thus, I would suggest the mdcsvimporter extension complies with the existing "moneydance:fmodule:txtimport" URI scheme of the txtimport extension (and vice versa) with additional parameters. A universal URI scheme could look like this:

moneydance:fmodule:txtimport:?file=/path/to/file/to/import&fileformat=fileformat&dateformat=dateformat&importaccount=myaccount&deletecsvfile=1&importtype=online
By the way, I ignore case so you could use fileFormat if you like.

The Import List extension (or any other caller) could fill in and pass the required parameters (such as the filename for now). Whatever CSV extension responds to the call is then responsible for handling (or ignoring) the parameters. The main advantage of this approach would be loose coupling of the extensions.

What do you think? More ideas?
Flow
The only difference I see here is 'file' instead of his 'filename', and
that I don't care too much about off hand. You have to create your
uri call anyways for txtimport or mdcsvimporter and they could have
different arguments anyways.

I checked in mdcsvimporter 15.4 code by the way too.

Thanks,
Stan Towianski

Hello World

unread,
Oct 24, 2011, 3:38:34 AM10/24/11
to mdcsvimporter
My quest is completed.

Mdcsvimporter has married with Importlist;

Their offspring is,

1: One click to automatically import a text file using the text file
name as the account name.

Rules for their offspring,

1: One File Format per each account
: eg Account Name = Saving Account the File Name must be Saving
Account.xxx and File Format = Saving Account
: (xxx = a txt file extension, eg csv)

2: Securely erase file after processing setting is used from the
previouse manual imported setting.
: default feature for Mdcsvimporter

3: Import Transactions as Online is the default.


Possible bug or as intend as of version 15.4, maybe Stan can answer.

1: Mdcsvimporter doesn't import duplicate records only for Import
Transactions as: Online.
: Import Transactions as Regular will always add records.

2: If I import the same text file to the same account twice or more,
the message shows Total Records Pocess: 9 Records Imported: 9
Duplicate Skipped: 0 Rejected Records: 0
: But no record has been imported, wrong message displayed I think.

3: I think from version 15.3, there is a list of Item 1 to Item 4 for
File Format and Date Format, what are they and how to use them?
: Those fields were grey out before.

One or two or three features request from Stan and I am happy with
version 15.4 too.

1: I prefer not seeing any error messages if I import a text file with
incorrect File Format or incorrect Select Account from the command
line options.
: Display the Reader dialog is good enought.

2: The Reader dialog stays after a text imported, this allows me to
import more text files if I wish.

3: I prefer detail information message, like Total Records Process,
Rocords Import, etc, on the Reader dialog instead of message box.
: but message box can stay from command line options:)

4: Optional, Mdcsvimporter should change name to Universal Text
Importer:)


Changes I made to import list source files so she could marry with
Mdcsvimporter with using file name as the account name if matched.

Source from:https://github.com/my-flow/importlist

File: src\com\moneydance\modules\features\quickimport\resources
\importlist.properties
From:
text_file_import_uri_prefix = moneydance:fmodule:txtimport:?file=
To:
text_file_import_uri_prefix =
moneydance:fmodule:mdcsvimporter:filename=

File: src\com\moneydance\modules\features\quickimport\io
\FileAdmin.java
From:
callUri = this.prefs.getTextFileImportUriPrefix()
+ file.getAbsolutePath();
To:
callUri = this.prefs.getTextFileImportUriPrefix()
+ file.getAbsolutePath() + "&fileformat=" +
file.getName().replaceFirst("[.][^.]+$", "") + "&importaccount=" +
file.getName().replaceFirst("[.][^.]+$", "") + "&importtype=online";

Then command ant to compile importlist.



Now is the hard part, how make the money dance instead of running
away.


Thanks Stan for your brain of skills.

Stashu

unread,
Oct 24, 2011, 10:57:24 AM10/24/11
to mdcsvi...@googlegroups.com, Hello World
Hi,

I do not know how to get your code or mxt files. Did you commit the code?
I downloaded a zip file and made the 2 code file changes you
mentioned, but it did not work for me.

I built your code with: ant importlist and that worked.
The importlist.mxt file has your properties file with my
change in it, but when I load the *.mxt file in MD, and
I click on a *.csv file, it opens up 'text file importer' and
not mdcsvimporter.

By the way, I did not find:

File: src\com\moneydance\modules\features\quickimport\io
\FileAdmin.java

but found FileAdmin.java at:
..../my-flow-importlist-b907a4a/src/com/moneydance/modules/features/importlist/io/

Thanks,
Stan Towianski

Hello World

unread,
Oct 24, 2011, 8:30:49 PM10/24/11
to mdcsvimporter
Hi Stan,

Sorry for a little confusing regarding the path of the importlist
source.

I have been playing with the source and forgot about it.

Those two files should be in the following as from their original
source if dowloading the importlis source zip format.

\importlist\my-flow-importlist-b907a4a\src\com\moneydance\modules
\features\importlist\resources\importlist.properties

\importlist\my-flow-importlist-b907a4a\src\com\moneydance\modules
\features\importlist\io\FileAdmin.java

I thought I gone crazy, I could not make it to work following my own
instructions.

Maybe because I had changed the source codes with the most current
libraries except commons-lang-2.6.jar stayed the same.

It worked out the problem was - copy and paste the codes from the
instruction in the web browser broke the importlist.

So I followed the instruction again with the original importlist
source, but copy and paste from my source files instead, and it
worked.

I used Windows WordPad to edit the files, hope it doesn't cause
problems to compile for other operating systems.

Here the importlist source, with changes from the instruction only;
Don't forget to change the path of ant in build.bat if using it.

importlist_for_mdcsvimporter.zip:
http://docs.google.com/uc?id=0B8tV6xQbDtrvYjBlZTk4YTUtMmQwNi00NTFlLWIxZWYtYzY0NjEwY2ZkNGZk&hl=en_US
md5: efd77e0641df40d7b992654ae1d63377

And here is the new importlist.mxt for mdcsvimporter compiled from the
instruction with the original importlist source;

importlist.mxt: http://docs.google.com/uc?id=0B8tV6xQbDtrvOTc1MzhkM2ItZTQzNi00ZmRhLWI1ODMtMzBkMWQwN2E4NGQ4&hl=en_US
md5: f4da92c1bad94d9c65807e3191e88f55

Restart the moneydance after installing the plugin and select a folder
for the importlist to watch if seeing a popup.

While we are at it, I would prefer fileformat name from the command
line not case sensitive:)
The File Format name has to be 100% match include cases to work.


Cheer;

stashu pub

unread,
Oct 25, 2011, 5:53:17 AM10/25/11
to mdcsvi...@googlegroups.com, disg...@gmail.com

Hi,

I will try this later in the morning.

1.) I was thinking you might have a drop down that would let the user choose like

Use: text file importer
         Import csv file

2.) I said before that I made the arguments to be not case sensitive, so you can use either 'fileformat' or 'FileFormat'. Is that what you wanted also?

Thanks,
Stan

--
You received this message because you are subscribed to the Google Groups "mdcsvimporter" group.
To post to this group, send email to mdcsvi...@googlegroups.com.
To unsubscribe from this group, send email to mdcsvimporte...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/mdcsvimporter?hl=en.

Hello World

unread,
Oct 25, 2011, 6:36:28 AM10/25/11
to mdcsvimporter
Hi Stan,

I think you confusing me with Florian J. Breunig(the owner of
importlist), am a noob with 0 java skill:)

The case sensitive I was talking about is a different one,

eg, If I have File Format = Saving Account, and command is
importaccount=saving account&fileformat=saving account, this won't
work because fileformat must be = Saving Account to work.

Cheer,

stashu pub

unread,
Oct 25, 2011, 8:12:34 AM10/25/11
to mdcsvi...@googlegroups.com, disg...@gmail.com

Right,  I am confused by who you guys are. Thanks for saying something :-)

Ok,  I will check,  but I think I am only ignoring case for the argument name,  not the value,  so I should be good.

Thanks,
Stan Towianski

Florian J. Breunig

unread,
Oct 25, 2011, 7:46:55 PM10/25/11
to Stashu, mdcsvi...@googlegroups.com
Stan,

Although "Hello World" seems to be completing his integration quest, let me clarify some general points I made earlier on how importlist and mdcsvimporter could possibly interact. I suspect you misunderstood my previous suggestion on the common interface of mdcsvimporter and txtimport. The main idea is that mdcsvimporter should use the interface

moneydance:fmodule:txtimport:?file=/path/to/file/to/import&...

Please note the "txtimport" part (*not* "mdcsvimporter" as it is currently implemented) which is the same as in the txtimport extension. This means that importlist could call both extensions (mdcsvimporter and txtimport) using the *exact same* call with the *exact same* arguments. There's no need for importlist to choose which of the two extensions should be called (no drop down, no radio button, no settings) because the user would install only one of the two extensions that can handle CSV files. By complying with the exact same interface, the moneydance:fmodule:txtimport call would be forwarded to the one extension that is installed (either mdcsvimporter or txtimport).

So importlist creates only *one* URI call (which uses *one* URI scheme with the *same* arguments for both extensions) and the Moneydance "framework" forwards this URI call to the one extension that is installed.

Cheers,
Flow

Hello World

unread,
Oct 25, 2011, 11:05:53 PM10/25/11
to mdcsvimporter
Hey Florian,

Here my noob question;

1: about moneydance:fmodule:txtimport:?, I think txtimport is the file
name of the extension?
: if so, this can't be done, because two plugins can't have the same
file name.

If not, your idea is good.

On Oct 26, 9:46 am, "Florian J. Breunig" <Florian.J.Breu...@my-
flow.com> wrote:
> Stan,
>
> Although "Hello World" seems to be completing his integration quest, let me clarify some general points I made earlier on how importlist and mdcsvimporter could possibly interact. I suspect you misunderstood my previous suggestion on the common interface of mdcsvimporter and txtimport. The main idea is that mdcsvimporter should use the interface
>
> moneydance:fmodule:txtimport:?file=/path/to/file/to/import&...
>
> Please note the "txtimport" part (*not* "mdcsvimporter" as it is currently implemented) which is the same as in the txtimport extension. This means that importlist could call both extensions (mdcsvimporter and txtimport) using the *exact same* call with the *exact same* arguments. There's no need for importlist to choose which of the two extensions should be called (no drop down, no radio button, no settings) because the user would install only one of the two extensions that can handle CSV files. By complying with the exact same interface, the moneydance:fmodule:txtimport call would be forwarded to the one extension that is installed (either mdcsvimporter or txtimport).
>
> So importlist creates only *one* URI call (which uses *one* URI scheme with the *same* arguments for both extensions) and the Moneydance "framework" forwards this URI call to the one extension that is installed.
>
> Cheers,
> Flow
>
> On 24.10.2011, at 04:34, Stashu wrote:
>
>
>
>
>
>
>
> > On 10/23/2011 04:32 PM, Florian J. Breunig wrote:
> >> Hello Stan, hello World,
>
> >> thank you for your message. As far as the Import List extension is concerned, it invokes the txtimport extension using the URI scheme moneydance:fmodule:txtimport:?file=/path/to/file/to/import, which is similar to the standard schemes given at
> >>http://moneydance.com/dev/urischeme. I parameterized the txtimport extension in build number 8 (seehttp://code.google.com/p/moneydance/source/list

Stashu

unread,
Oct 25, 2011, 11:13:26 PM10/25/11
to mdcsvi...@googlegroups.com, Hello World, Florian J. Breunig
Hi,

Hmmm. I thought "disguise9" sent me the link to the new code*.zip,
but I thought you are not much on Java, and I am still confused on
which of you is doing what. My thunderbird email working with gmail
seems to suck too as I am not always able to find my emails and
a couple of inbox emails showed up in 'sent' mail. very strange.

Anyways, I made a quick change on my part to take arg: 'file' instead
of 'filename' if that matters. I see someone was passing me 'filename'
successfully though.

Now there is a problem with the args I am getting. They are not correct:

Java: 1.6.0_25 (Sun Microsystems Inc.)
uri string
=filename=/home/stowians/Downloads/aa-test.csv&fileformat=aa-test&importaccount=aa-test&importtype=online=

arg token [0] =filename= token[1] =/home/stowians/Downloads/aa-test.csv=
arg key =filename= value =/home/stowians/Downloads/aa-test.csv=

arg token [0] =fileformat= token[1] =aa-test=
arg key =fileformat= value =aa-test=

arg token [0] =importaccount= token[1] =aa-test=
arg key =importaccount= value =aa-test=

arg token [0] =importtype= token[1] =online=
arg key =importtype= value =online=

What happened here?

Thanks,
Stan Towianski

>>>>> delimiter to&. Will that work for you? I should have thought about : in the windows filename :-)

Hello World

unread,
Oct 25, 2011, 11:30:21 PM10/25/11
to mdcsvimporter
Hi Stan

=filename=/home/stowians/Downloads/aa-test.csv&fileformat=aa-
test&importacc ount=aa-test&importtype=online=

"importacc ount" Should Be "importaccount"

Any thing else am not sure.

Stashu

unread,
Oct 25, 2011, 11:36:55 PM10/25/11
to mdcsvi...@googlegroups.com, Hello World, Florian J. Breunig
Hi,

Who is actually modifying the importlist java code, you or Florian??

The problem below is only the 'file' and the hardcoded
'importtype=online' args
are correct. The other ones are wrong.

fileformat=aa-test<-- these are both passing the filename which is incorrect
&importaccount=aa-test


This is probably where it is happening?

if (this.textFileFilter.accept(file)) {
callUri = this.prefs.getTextFileImportUriPrefix()


+ file.getAbsolutePath() + "&fileformat=" +
file.getName().replaceFirst("[.][^.]+$", "") + "&importaccount=" +
file.getName().replaceFirst("[.][^.]+$", "") + "&importtype=online";
}

Do you both work on this code or what parts do you each handle?

Thanks,
Stan

Hello World

unread,
Oct 25, 2011, 11:43:08 PM10/25/11
to mdcsvimporter
I am not involve with importlist development, Florian does I believe
he is the owner.

I modified the code for my personal use only, and post the link to
share if it will be useful for some one:)
> ...
>
> read more »

Stashu

unread,
Oct 25, 2011, 11:43:26 PM10/25/11
to mdcsvi...@googlegroups.com, Hello World, Florian J. Breunig
Hi,

In looking at your importlist window again, you are not asking
the user for the 'fileformat' or the 'importaccount' or the optional
'deletecsvfileflag' (if this argument exists, it is true), so how can
you pass any of them to me! :-)

Thanks,
Stan

Stashu

unread,
Oct 25, 2011, 11:51:08 PM10/25/11
to mdcsvi...@googlegroups.com, Florian J. Breunig
Hi Florian,

I see disguise9 changed a property:
# The prefix of the application event that imports a given CSV file using
# the text file importer plugin.
text_file_import_uri_prefix = moneydance:fmodule:mdcsvimporter:file=

to make it call mdcsvimporter and that works now.

I have not looked into much about how MD extensions work
up to this point. Would I have to change something in mdcsvimporter
to say "I implement " moneydance:fmodule:txtimport: interface
...?file=/path/to/file/to/import&...

and would that conflict in a source code tree somewhere with "text file
importer"?
Would I have to change java package paths or something in our code?
How does this work?

Thanks,
Stan Towianski

Florian J. Breunig

unread,
Oct 26, 2011, 4:05:47 PM10/26/11
to mdcsvimporter
Hey,

This is Florian J. Breunig, developer of the Import List extension,
which can be found at http://my-flow.github.com/importlist/. As it is
an open-source extension, everybody can customize his/her own version.
The source code and the build instructions are located at
https://github.com/my-flow/importlist. I haven't been changing any
Java code in the course of this discussion ;-)

disguise9 aka "Hello World" has created his/her own version of the
Import List extension and implemented individual characteristics. Of
course, this is fine with me (that's why it's open source after all),
but the adapted characteristics will not become part of my
"officially" released version since I refuse to hardcode the
mdcsvimporter extension into the importlist extension.

The README.txt file in the Extension Developer's Kit located at
http://moneydance.com/developer contains instructions on how to change
the unique ID of the extension (see section ADVANCED USAGE). In our
case, the unique ID is the "txtimport" part of the interface. The
unique ID would then no longer be unique (because both the traditional
txtimport extension and the mdcsvimporter extension would use the same
ID). However, the user must make sure s/he installs only one of the
two extensions, not both. Also, I believe there would be no conflicts
in the source code tree since you're using different repositories.
Please note that you can still use the name "mdcsvimporter" as the
name of the module and you can still have your individual description
in the meta information.

Regarding the argument "fileformat", "importaccount", and
"deletecsvfileflag": As already pointed out, the Import List extension
cannot deliver them. The mdcsvimporter extension is responsible for
determining these values from the filename that is passed or from its
own settings.

I suggest we ask for Sean's advice on the general matter of having two
different extensions with the same interface.

Cheers,
Flow

Hello World

unread,
Oct 26, 2011, 8:22:26 PM10/26/11
to mdcsvimporter
Hi,

I have to retype again, could not get my reply to author message back.

As I have sent a message to Flow.

I did some test and recompiled mdcsvimporter to a differnt extension
call utxtimporter (Universal Text Importer), but had the same Java
source package = com.moneydance.modules.features.mdcsvimporter

The problems were.

1: I could not install utxtimporter.mxt while Java source package =
com.moneydance.modules.features.mdcsvimporter
: but I could install when I renamed utxtimporter.mxt to
mdcsvimporter.mxt
: so? the extension name must be the same Java source path.

2: After I installed the new mdcsvimporter.mxt(Universal Text
Importer), Universal Text Importer became CSV Importer while I allowed
Moneydance connected to the internet.
: And became Universal Text Importer while I was Not allow Moneydance
connecting to the internet.

So, at the end, the two extensions, mdcsvimporter and txtimport must
be separated in file name and Java source package(Unique ID?)


Cheer;


On Oct 27, 6:05 am, "Florian J. Breunig" <florian.j.breu...@my-
flow.com> wrote:
> Hey,
>
> This is Florian J. Breunig, developer of the Import List extension,
> which can be found athttp://my-flow.github.com/importlist/. As it is
> an open-source extension, everybody can customize his/her own version.
> The source code and the build instructions are located athttps://github.com/my-flow/importlist. I haven't been changing any
> Java code in the course of this discussion ;-)
>
> disguise9 aka "Hello World" has created his/her own version of the
> Import List extension and implemented individual characteristics. Of
> course, this is fine with me (that's why it's open source after all),
> but the adapted characteristics will not become part of my
> "officially" released version since I refuse to hardcode the
> mdcsvimporter extension into the importlist extension.
>
> The README.txt file in the Extension Developer's Kit located athttp://moneydance.com/developercontains instructions on how to change

Florian J. Breunig

unread,
Oct 27, 2011, 3:45:34 PM10/27/11
to mdcsvimporter
Hi,

The README.txt file in the Extension Developer's Kit states that an
extension's main class must be com.moneydance.modules.features.
{extensionid}.Main. That means the mdcsvimporter's main class must be
com.moneydance.modules.features.txtimport.Main if it uses the
extension ID "txtimport". The filename of the mdcsvimporter extension
would be "txtimport.mxt". The module's name, however, is defined in
the file "meta_info.dict" and that one would still be "mdcsvimporter".

After all, the user has to decide which extension s/he wants to
install. The user can either install mdcsvimporter or txtimport (not
both!) because only one extension can handle calls to the interface
moneydance:fmodule:txtimport:?file=/path/to/file/to/import&... So make
up your mind and decide how you want your CSV transaction files to be
imported by installing the CSV extension you need ;-)

Cheers,
Flow
> > The README.txt file in the Extension Developer's Kit located athttp://moneydance.com/developercontainsinstructions on how to change

Hello World

unread,
Oct 27, 2011, 6:19:43 PM10/27/11
to mdcsvimporter
Hi,

Yes, that's right.

But mdcsvimporter will be come txtimport product when installed.

Users will not know if they install mdcsvimporter because it displayed
as txtimport product in the extension list.

Users are limit in choices to have mdcsvimporter Or txtimport.(must
choose one)

When doing upgrade, users will install txtimport and replace the
pretend mdcsvimporter.

By changing the ID to txtimport, mdcsvimporter is being see as a thief
working pretending to be txtimport.

Cheer;


On Oct 28, 5:45 am, "Florian J. Breunig" <florian.j.breu...@my-
> > > The README.txt file in the Extension Developer's Kit located athttp://moneydance.com/developercontainsinstructionson how to change

Stashu

unread,
Oct 27, 2011, 6:24:43 PM10/27/11
to mdcsvi...@googlegroups.com, Hello World
Thanks for your work "Hello World" on figuring this out!

Stan Towianski

Florian J. Breunig

unread,
Oct 27, 2011, 6:53:47 PM10/27/11
to mdcsvimporter
Hi,

I would like to reproduce the online/offline behaviour you described.
It would be unfortunate if Moneydance overwrote "conflicting"
extensions. Could you please send me a copy of mdcsvimporter as an
installable MXT file (named "txtimport.mxt") that uses the txtimport
interface?

Thank you,
Flow
> > > > The README.txt file in the Extension Developer's Kit located athttp://moneydance.com/developercontainsinstructionsonhow to change

Hello World

unread,
Oct 27, 2011, 10:25:18 PM10/27/11
to mdcsvimporter
Hi
I can do better than that,I modified importlist source to use ID
txtimport.
The result is the same.
importlist_for_mdcsvimporter_with_id_txtimport.ziphttp://
docs.google.com/uc?
id=0B8tV6xQbDtrvNDhhYWE0ZDgtZDYyNy00ZDE4LWJjMzQtYjhjMTY4MDdmY2Jj&export=download&hl=en_US
txtimport.mxthttp://docs.google.com/uc?
id=0B8tV6xQbDtrvMmM4NjJiYzktYzlkMy00YTgyLThmYjgtOWQ3MTZmNmMxZmEy&export=download&hl=en_US
The files above will be removeD in the next few weeks.

Cheer

On Oct 28, 8:53 am, "Florian J. Breunig" <florian.j.breu...@my-
flow.com> wrote:> Hi,> > I would like to reproduce the online/offline

Hello World

unread,
Oct 27, 2011, 10:28:07 PM10/27/11
to mdcsvimporter

Florian J. Breunig

unread,
Oct 29, 2011, 6:32:44 PM10/29/11
to mdcsvimporter
Hello World,

you're right. Every extension ID must be unique. The unique IDs of all
installed extension are matched against the server when checking for
updates.
Thank you for your instructions on how to patch importlist in order to
work with mdcsvimporter. It would be great if you could publish these
instructions on the importlist wiki at https://github.com/my-flow/importlist/wiki
as well. Currently, the only work-around I see is manual integration.

Thanks you,
Flow


On Oct 28, 4:28 am, Hello World <disgui...@gmail.com> wrote:
> The links seem to be broken in above; here again;
>
> importlist_for_mdcsvimporter_with_id_txtimport.zip
>
> http://docs.google.com/uc?id=0B8tV6xQbDtrvNDhhYWE0ZDgtZDYyNy00ZDE4LWJ...
>
> txtimport.mxt
>
> http://docs.google.com/uc?id=0B8tV6xQbDtrvMmM4NjJiYzktYzlkMy00YTgyLTh...

Stashu

unread,
Oct 30, 2011, 3:32:25 AM10/30/11
to mdcsvi...@googlegroups.com, Florian J. Breunig, Hello World
Hi,

BETA 15.5
added &processflag arg if you want to have it autoprocess as in from
"input list" extension.
played with arguments processing code. Tried to have it bring up less
error dialog boxes
when not needed.
Made a pretty significant change to duplicate catching. Added another 2
hashSets for
matching on FITxnId for protocolId = 1 and 999 (mine). This should get
rid of duplicates
that were coming when you imported twice; especially once with type
online and then with regular
or vice versa.

I would think that in importlist, you could do what I mentioned before
and put a drop-down list if you want, listing text file importer and
mdcsvimporter
and let people pick if you install both.

disguise9, if you leave off arguments that you know will be wrong and
just pass:
&file=xxx&processflag&importType=online

it won't give you unnecessary error dialog messages.

Thanks,
Stan Towianski

Hello World

unread,
Oct 30, 2011, 6:15:48 AM10/30/11
to mdcsvimporter
Hey;

Nice for the update.

I have been trying to figure out what the option "processflag" did.

First I thought "processflag=0" to disable all errors message, but
that didn't work:)
Second I thought maybe put "processflag" in front the option that
maybe wrong to disable all errors, but that didn't work:)
Third I thought maybe put "processflag" in behind the option that
maybe wrong to disable all errors, but that didn't work:)

Then I reread your message over and over a few times again and this
word "leave off arguments".
Now I understand;

I had mention about error messages before; because the way I wanted to
automate import.
My command line was:

file=Saving Account.csv&fileformat=Saving Account&importaccount=Saving
Account

As you can see File Format and Import Account is the same File name
(less file extension)

Error was from either File Format or Import Account was wrong, but
normally both were wrong when I tried to import unprepared files for
import.

It would be nice to just bring up only ImportDialog with no errors
when specified fileformat or/and importaccount were wrong.

Sorry, I wasn't clear about that, there were no errors if left options
out.

While you are still at it, here more wish list:)

1 : Here my ImportDialog and CustomReaderDialog.
: Select CSV Filet changed to Select Text File (this plugin can
handle all types)
: Maintain Custom Readers to Manage File Format (Clearer because of
File Format select options)
: Move Reset Fields to the bottom with other buttons.
: Move Header Lines and Field Separator to look better.

ImportDialog

http://docs.google.com/uc?id=0B8tV6xQbDtrvZDA3ZTY1ZTEtNzhlMi00NTAzLTljYzktYTBlMTZkMzQwYmYz&export=download&hl=en_US

CustomReaderDialog

http://docs.google.com/uc?id=0B8tV6xQbDtrvNTMyMTA2YmQtMzMxZS00MDRhLTg0MDYtOWViYTk3ZTQ1YTBk&export=download&hl=en_US

2: I changed Import CSV File in Extensions menu to Universal Text
Import(As it can handle more than just a csv)==:)

I think mdcsvimporter is perfect as it is now.

OOh, I tried to compile with ants on Windows 7 without using Netbeans,
it gave me a little error;
My command was:

ant -logfile log.txt jar

error:
C:\download\mdcsvimporter\mdcsvimporter-read-only\build.xml:95: Unable
to remove existing file C:\download\mdcsvimporter\mdcsvimporter-read-
only\dist\mdcsvimporter.mxt

I think ants the move command isn't a friend for Windows 7.

To fix I changed the move command to copy command and added a delete
command like so..

From:

<move file="s-${idstring}.mxt" tofile="${dist.jar}"
overwrite="true"/>

To:

<copy file="s-${idstring}.mxt" tofile="${dist.jar}"
overwrite="true"/>
<delete file="s-${idstring}.mxt" quiet="true"/>

Keep the good work, and I am happy with the current version already.

Cheer;

Stashu

unread,
Oct 30, 2011, 9:49:14 AM10/30/11
to mdcsvi...@googlegroups.com, Hello World, Florian J. Breunig
Hi Hello,

1.) A couple of flags (processFlag and deleteCsvFileFlag) only have to exist
to be used. That's why I put the name 'flag' on the end of them to try to
help with understanding. So, they do not need a value like the other args:
no: &processFlag=xxx (but it would work also) just &processFlag

and this is like pressing the "Process" button.
If you do not use it, it just brings up the importDialog.

2.)
if (this.textFileFilter.accept(file)) {
callUri = this.prefs.getTextFileImportUriPrefix()
+ file.getAbsolutePath() + "&processFlag&fileformat=Savings
Account&importAccount=Savings Account&importType=online";
}

works for me. You have to have a fileformat and an importaccount both
call "Savings Account"
and if you do, it will work. I know you used a regex before. If I could
find that code, I would try it,
but I think it would work. I was going to look at these some more, but I
wanted to fix
the duplicates matching too.

If you tell it to use something invalid, I want to pop up a window to
let you know. That is my thought.
If the importaccount and fileformat exist, it will work without giving
you a pop up window.
Do they exist for you?


3.) by saying "leave off arguments", i mean you can do just:

callUri = this.prefs.getTextFileImportUriPrefix()
+ file.getAbsolutePath()

and it will fill in your filename and the bring up the importDialog window


4.) I like some of your suggestions. I do need to use the same terms,
like either "custom reader" or "file format", but not both :-)
I will look at the rest of your suggestions later.

Thanks for your work too. You are very helpful!

Stan Towianski

>> added&processflag arg if you want to have it autoprocess as in from

Hello World

unread,
Oct 30, 2011, 7:05:04 PM10/30/11
to mdcsvimporter
Hi;

> 2.)
>          if (this.textFileFilter.accept(file)) {
>              callUri = this.prefs.getTextFileImportUriPrefix()
>              + file.getAbsolutePath() + "&processFlag&fileformat=Savings
> Account&importAccount=Savings Account&importType=online";
>          }
>
> works for me. You have to have a fileformat and an importaccount both
> call "Savings Account"

My command lines were (importaccount and fileformat took from the file
name.

             + file.getAbsolutePath() + "&fileformat="
+ file.getName().replaceFirst("[.][^.]+$", "") + "&importaccount="
+ file.getName().replaceFirst("[.][^.]+$", "") +
"&importtype=online"; 

I thought it would be good to have a hidden feature, where
importaccount and fileformat were existed and the same file name, it
would auto import and if importaccount and fileformat were not
existed, it would just bring a normal importDialog window without
errors:)

Never mind, some times I thought some thing was good, and the world
would think the same:), often not.


Cheer;

Stashu

unread,
Oct 31, 2011, 11:14:53 AM10/31/11
to mdcsvi...@googlegroups.com, Hello World
Hi Hello,

I was thinking of doing that for you, but as I mentioned, I moved
to working on the duplicates. So, I just now added this new flag
for you and you can use it this way:

+ file.getAbsolutePath() + "&fileformat="
+ file.getName().replaceFirst("[.][^.]+$", "") + "&importaccount="
+ file.getName().replaceFirst("[.][^.]+$", "") +

"&importtype=online&NoPopErrorsFlag&ProcessFlag";


I have not put out a build yet, because I might do a couple of other
things first.
I will let you know when it is out there.

Thanks,
Stan Towianski

Hello World

unread,
Oct 31, 2011, 9:09:57 PM10/31/11
to mdcsvimporter
Thanks stan:)

That's why men don't talk much, it will be like The Tower of Babel:)

Stashu

unread,
Nov 2, 2011, 11:37:57 PM11/2/11
to mdcsvi...@googlegroups.com, Hello World
Hi,

I just did some of these changes, plus you should be able
to use the new arg: &NoPopErrorsFlag

Another big change has to do with managing the 'Date' format settings.
Check yours before using.

Thanks,
Stan Towianski


On 10/30/2011 06:15 AM, Hello World wrote:

Hello World

unread,
Nov 3, 2011, 1:10:58 AM11/3/11
to mdcsvimporter
Hi Stan;

An other good release.

Every thing the way I want, except I didn't do all the work.

but:), I got an error "There was an error loading the extension file:"
when tried to install mdcsvimporter-beta-15.6.mxt.

Work great from my build command: ant -buildfile build.xml jar

What missing now is some wiki how to build mdcsvimporter and a how to
build importlist for mdcsvimporter and let every one knows all command
features.


cheer;

stashu pub

unread,
Nov 3, 2011, 8:11:02 AM11/3/11
to mdcsvi...@googlegroups.com, disg...@gmail.com

Hi,

Does my file work if you rename it to simply mscsvimporter.mxt before you install it?

Dumbness in the install I think.

That it what your rebuild names it.

Let new know.

Stan Towianski

--
You received this message because you are subscribed to the Google Groups "mdcsvimporter" group.
To post to this group, send email to mdcsvi...@googlegroups.com.
To unsubscribe from this group, send email to mdcsvimporte...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/mdcsvimporter?hl=en.

Hello World

unread,
Nov 3, 2011, 5:29:44 PM11/3/11
to mdcsvimporter
Hi;

Worked as you said to rename the file to mscsvimporter.mxt

I thought I saw the message before.

Maybe distribute it in zip.


Cheer;
Reply all
Reply to author
Forward
0 new messages