I want to build a framework application which can work cross platforms (Windows, Mac, Linux).
1. It let admin user to add command line programs to its database together with arguments/parameters to run it. So when a user choose to run the program from this GUI, parameters are already pre-populated. The "Run" command will actually collect parameters, issue the command line program together with all intent parameters as its argument, and then run and watch the program in background.
For example: a "dir" command in Windows run on "C:/Program Files/" with -p parameter will run like so:
dir -p "C:\Program Files". This command lists folder content of "C:\Program Files"
Similarly, in linux: a ls command to list content of "~/test dir" with -l, a, h parameters:
ls -lah "~/test dir"
Notice the folder/directory name contains spaces, sometimes arbitrary characters that are accepted for folder/directory names or file names. The program must be able to cope with these characters and run correctly.
2. It let normal user to "read only" general program database created by admin user(s), and can add programs to the user's private database. If the program is already in general database and user has "read" permission, there should be a copy command to duplicate the entry from general database to private database.
3. If a user has the permission, he/she can edit the parameters and save to future runs.
4. Number of parameters can vary from program to program. With right permission, user can add/remove parameter when they edit the database.
5. User can see running commands, and their progress/status, stdout, stderr on the GUI's window, just like the commands are run on their native command line environments.
6. It allows create and edit program categories to organize them, at general database and per-user database.
7. It allows admin to manage users and user permissions.
8. It allows add/edit program descriptions, keywords.
9. It allows search programs by program name, descriptions, keywords, etc.
10. It allows attach document (external documentations to the program entry).
OTHER AGREEMENTS (IMPORTANT):
1. The framework will be my possession. You are not allowed to give, sell, publish, or hand over to a third party any part of it without my written consent. Read this item again, and only proceed if you agree to oblige.
2. You should test the code, compile, pack in JAR file(s), and run it on at least one of 3 OS environment (Mac, Windows, Linux). I will take the code, compile, pack, and run it myself on all three of them. You have to fix errors that prevent the application to run correctly on these OSes.
3. It is not required, but you can make installer is good.
4. Since the program will be developed further after this project complete, the source code MUST follow good practices and for future maintenance and development. Cryptic, obfuscated, or lazy coding style is NOT acceptable.
5. Programming language can be either Java or preferably Scala.
6. Database engine should be a standalone without having to setup database server. One candidate can be SQLite.
7. You don't have to populate the databases, only make funtionality for users to add programs later. However, several demo programs are necessary.
Practically this application requires minimum intermediate skills in Java or Scala. Don't bid if you don't have it.
Additional Project Description:
01/16/2013 at 17:30 CET
Hi, I could not access the "project edit" functionality sooner, here are some additional requirements.
11. There should be a setting/preference menu and window with tabs to allow configure of database locations, mange users - passwords - permissions. Locations for main database and for user database can be set separately.
OTHER AGREEEMENTS( Continued)
8. To help my selection process, please provide me with class hierarchy and directory structure of the application you are going to write. Some mockup screens are also nice, just to give what you currently have in mind about the application.
9. This can be silly, but better now than later. This is to elaborate further the point about "good practices" mentioned earlier The source MUST be reasonably commented in plain English. You should not use your own abbreviations/acronyms. And yes, I have seen code commented in many other languages.