Monthly Archives: December 2010

Christine 12.30.2010

  • Met with Phil to see if building AirFileImageApp with Maven works on Windows. It doesn’t (will Windows and Mac every play nice). Will work further on task to get it working on Windows
  • Phil talked about IDE project and different pieces that will be needed to complete. Will work on Maven parser once other task is complete
  • Phil also showed me how the other projects work so I can get a better understanding of what currently exists, what’s in the works, etc.
  • Was given Eclipse Plug-ins book so I can read up on and get more familiar with how Eclipse plug-ins work

Phil 12.30.2010

7:30 – 4:00 VISIBILITY

  • Imported Anne’s spreadsheet. One column had paragraph-length descriptions, which wouldn’t fit in the DB. Not sure if this needs to be fixed or not…
  • Working with Christie to see if her mavanized air app will compile and run on my machine. Close – It compiles but the air app does not install properly. Also an issue with getting the assets directory and its contents into the project
  • Got my sandbox applet up and running. Much easier when you know what you’re doing. Next step is to upload and download binary data.

Mike 12.29.2010

Made a few architecture and functionality choices for the SWFManager:

  • Desktops: A Desktop is exactly as it sounds.  It contains everything one would normally associate with the desktop: a set of applications in windows, a taskbar of some type and anything else added later at this level.  An instance of SWFManager can have multiple Desktops but only one visible at a time and, for now, applications can not be shared between desktops though it would not be impossible to implement.  Communication between desktops will be possible.  In fact, some events may be fired that can span desktops while others are limited to only live within a single desktop.
  • Apps: An app is very similar to most applications on a windows machine.  They contain everything needed to run independently but, in this case, will be able to communicate between each other.  Every App is placed on a Desktop within an AppTitleWindow which is an extension of DynamicPanel.  An AppTitleWindow has buttons for minimize, maximize, and close and can be moved and resized around the desktop.  The interface for IApp as it stands now:
    • Get and Set configuration, this is a DataObject that contains all the information the application needs to restore its state
    • Get Icon, this returns an icon that will be used in the task bar and possible in menus elsewhere
    • Validate configuration, this returns a boolean indicating whether or not the provided configuration object is valid
    • Default configuration, takes a config object and defaults all its properties
  • Widgets: A Widget is a basic user interface component such as a Chart, Datagrid, RichTextArea, or map with navigation controls.  Widgets live within SOME Apps.  A developer may make a very elaborate App with charts, datagrids, text, maps, and all sorts of things without needing to worry about defining them as Widgets or using our IWidget interface.  However, for some of our internal Apps, it makes sense to make reusable Widgets with certain capabilites.  All Widgets will be added to an App inside of an EditableWidgetContainer which contains controls for accessing Widget options.  The current inteface:
    • Get and Set configuration, this is a DataObject that contains all the information the widget needs to restore its state
    • Validate configuration, this returns a boolean indicating whether or not the provided configuration object is valid
    • Default configuration, takes a config object and defaults all its properties
    • Get Configuration Menu, returns a UIComponent containing whatever inputs are necessary to configure the widget, this is how users will configure their widgets at run-time
  • A few notes on Apps and Widgets:
    • Their interfaces are very similar and it would be possible for a component to implement BOTH IApp and IWidget so an App can be contained within an App.  The interfaces are purposely being kept separate so the developer can make that choice.  For example, it makes sense that an RSSReader may exists as both a Widget within a report or as a standalone App.  However, it wouldn’t make sense for Visiblity to be contained within another App.
    • Their positioning and sizing information will not be held within their own configurations.  It will instead be held either in the parent container’s config or the parent container’s layout config.
  • IApp, AppTitleWindow, and several applications are already written at this point so I’m now working on EditableWidgetContainer and a few sample widgets: AdvancedDataGrid, RichTextArea, and maybe a chart or 2

Phil 12.29.2010

7:30 – 4:30 VISIBILITY

  • Meeting with Anne this morning. We were able to pull data (via excel) from the main database into visibility. Not too many steps either. She’s going to work on putting together a good example table or tables that will let us make a particularly nice set of visualizations
  • Dong and I have a meeting with Adam and Christie at 11:00 – 1:00
    • Summary section year one is summing properly but subsequent years are not.
    • Budgets can be for only one year
    • Explicit save for financial data entry. There may need to be some rolling backup (saving to the client?) that the user may restore from if there is a problem.
    • Show the date of the last comment in the add/view comments area
    • Add commas to the invoice number entry fields
    • make login test not case sensitive
    • need to be able to enter negative amounts for the invoices
    • project name disappears from modify project screen occasionally when returning from some other task
    • Bigger invoice list view to include comments
    • Automatically add a comment if a past value has been changed. Something to the effect 12.28.2020 – Phil Feldman changed November 2010 program actuals for line item xyz from $123 to $345
    • Admin capability to add/modify/delete/merge tables produced using “add new”. Default behavior could be to present a list of projects that use the tag, and have the admin fix each manually. There could also be a global replace button.
    • Add a Financial Status page that only lets HQ see and change project info. This panel mostly shows data from the Funding Requests, but also allows the user to change the funding request by editing fields in the table. To do this several fields need to be added to the Funding Request widget:
      • Reference number in FACTS in reimbursable section (possible uniqueness test?)
      • if certified date != null, put funding amount in initiate/comment
      • Add outlay entry to reimbursable and Direct Cite
      • Add contractor name and location to Direct Cite table
      • Column that subtracts outlays from obligations
      • Roles will need year ranges
      • Program Elements and FACTS PE add to budget line item
      • Remaining to distribute – Total budget minus distributions
      • A scan of Trish’s spreadsheet is here

foo

Dong Shin 12.29.10

  • PPM
    • copied PPM stuff for deployment at /exchange/PPM_122910
  • MavenAssist
    • modified CreateProject and UserSettings to use archetypeRepository
    • -DarchetypeRepository=http://repository.sonatype.org/content/groups/public
    • current version is 1.9.2.8
  • meeting with Trish and folks
    • lots of notes to come….
  • PPM Bugs
    • Summary not updating for year 2, 3, so on in Financial Data
    • Ability to create project with 1 year span
    • Save Confirmation pops up on Financial Data – not working properly
    • Add comments status indicator, possibly number of comments and/or last updated date
    • Add commas to invoice dollar amont
    • Update login not possible because it’s used as database key. Let users change it and use no case-sensitive joins for existing data?
    • Allow negative values for invoice amounts
    • Project Name in Create Project disappearing?
    • larger View Invoices Panel in Financial Data so that comments are visible
    • logs/alerts for changing previous months data
      • from <> to <> by user id?
    • add delete/modify capabilities to all tables that use single drop down list to add a string to projects, funding requests, etc.
  • PPM Enhancements to support Financial Statu Sheet
    • one to one relationship with project
    • most of the data comes from Project and Funding Requests
    • if Certified Data != null, Initiate/Commit needs to be filled
    • new fields in Project – added to the Budget Datagrid
      • Program Element
      • FACTS BE
    • new fields in Funding Request
      • Reference Number in Reimbursable Amount – uniqueness test/
      • Contractor Name and Location in Reimbursable Amount/Direct Cites
      • Outlay in Reimbursable and Direct Cites
    • PM Actual Outlay = obligation – outlay
    • Roles to support users to fall into FYs and Projects
    • Remaining to Distribute = total budget – distributions

Christine 12.28.2010

  • Continued working on Mavenizing AirFileImageApp
    • Received 3 errors:
      • Content error in AirFileImageApp-app.xml. Changed generic “this text will be overwritten…” to ${output} and error fixed.
      • Received Error 303 : assets/BlackEye16.png (32, 48 & 128 too) Icon Missing from package. After looking into several possibilities (none of which applied to this issue), commented out the icons for now and it worked. This also ended up eliminating the 3rd error which said “failed to execute flexmojos-maven-plugin3.8:sign-air”
    • Ran several clean installs and they all build the application successfully.
    • Will write up exactly what was done to get application to execute via maven
  • Downloaded lastest MavenAssist patch. Still have the same issue where app is not reading archetypeRepository from settings and using 4.0. The app just does not want to play nice.

Mike 12.28.2010

  • Thought about architecture overnight and decided what I’m using now is good and all it is missing is defining how applications will interact with each other.  This will mainly depend on how our users will want to define actions.  Will they define very specific actions or should it be more automatic like the old global selected item stuff?
  • Worked on the reportwidget.  Started by loading in xml at runtime which creates an app and adds it to the screen.  Now I’m going to define a ReportWidget App in xml and load it at runtime and see if I can get some text / datagrids to appear.

Phil 12.28.2010

7:30 – 5:30 VISIBILITY

  • Meeting with Katie C. went well. I showed her the entire VISIBILITY suite, and she walked though what her group needs. She’s going to get together with her division chief and schedule a demo
  • Trish found a bug(?) with user data, where a phine number with an extension can’t be stored in the DB. Let Dong know about it.
  • Working my way through protocol buffers.
    • I have to say, this is getting complex. So far you need cygwin and the gcc compiler to *build* the protoc.exe compiler. Right now I’m running the config utility that is determining *how* it will make the executable….
    • And now I need make. Getting that. Done (Cygwin is pretty cool sometimes). Running.
    • Failed CommandLineInterfaceTest.WindowsOutputPath test. Seems to be that the checks don’t understand cygwin’s way of referencing the c drive (cd cygdrive/c as opposed to cd C:/). Reading the blogs, this appears to be tolerable. The install seems to work.
  • And before I go and try this, I’m going to look for some simpler binary transfer mechanism. This is OK if you’re Google, but I’d like something that doesn’t add complexity to an already complex concept.
  • Started building a war file for a test servlet project and ran into Christine’s problem. It turns out that when we’re adjusting the pom file after it’s creation but before eclipse:eclipse is run on it, the number for the flex-mojo plugin is coming from the flexVersion variable instead of the flexArchetype variable from the User Settings. Fixed that, and uploaded the new code into subversion.

Dong Shin 12.28.2010

  • working at home….
  • continue working on MySQLDataManager and MySQLDataObject
    • retrieves data in XML and add dynamic properties to each row (Object) of the data
    • dynamic object in DefaultDataObject may not be very usable…. need to change it to the properties of the Class itself
  • PPM Changes for adding phone extensions
    • DB changes
      • ALTER TABLE `users` ADD `unclass_phone_ext` VARCHAR( 4 ) NULL AFTER `unclass_phone`
      • ALTER TABLE `users` ADD `class_phone_ext` VARCHAR( 4 ) NULL AFTER `class_phone`
      • ALTER TABLE `funding_requests` CHANGE `financial_poc_phone` `financial_poc_phone` VARCHAR( 35 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL
      • ALTER TABLE `funding_requests` CHANGE `technical_poc_phone` `technical_poc_phone` VARCHAR( 35 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL
      • ALTER TABLE `funding_requests` CHANGE `nsa_poc_phone` `nsa_poc_phone` VARCHAR( 35 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL
    • Added extensions to AddUserForm
    • Add/Modify works
    • Added extensions to all contacts in Funding Request
    • Added extensions to SelectProjectWindow, ProjectMgmtPanel, ProjectViewerPanel sot that the extensions shown on Financial Data

Christine 12.27.2010

  • Worked with Dong on MavenAssist issue. Problem is that flexmojos-maven-plugin 4.0 was being used by maven, rather than 3.8 (which is specified in settings). It appears MavenAssist isn’t reading my archetypeRepository settings. Immediate fix: added in archetypeRespository setting into MavenAssist archetype command so that flexmojos-maven-plugin 3.8 is found and used, rather than latest one.
  • Reading through AirFileImageApp code
  • Reading up on how to run a Flex Air application via Maven. Made first attempt and all went well until reached digital signature of application. Reading up on manually creating the certificate for flexmojos-maven-plugin:sign-air to work. Created cert, but sign-air still failed to execute

Tom.DeVito 12.27.2010

Notes on self-extractors

Here are some ways to make self-extracting files in windows and linux.

Windows

  • No free viable solution so far…  Was going to use IExpress(this is what i was talking about last thursday), but you can only add files not directory structures which needless to say is terrible.
  • WinRar can make self-extracting files but they will not auto execute an installer.
  • Winzip self-extractor(not what comes with the standard winzip package) is a very good option but files made with the trial version are not licensed for distribution.  Full version cost $50.00

Windows is super annoying when it comes to compressing and decompressing files.  For whatever reason all of the more standard tools either don’t support directory structures or are not accessible via the command line.

Assuming that you are not trying to make a self extractor, and just want to compress or decompress files from within your program, the files found on this site will help:

http://stahlworks.com/dev/index.php?tool=zipunzip

Just drop them into your programs root directory and call it through the shell.  A lot of people like 7-zip for command line compressing and decompressing, but 7-zip needs to be installed in order to work whereas the zip.exe and unzip.exe files are completely self contained.

Linux

Linux is comparably much easier than windows.  I am pretty sure that all linux distributions come with tar.  Basically all you do is tar the file and then vi into it and add your self executing script to the beginning.  The tutorial above tells you to make a script that will run after decompression but this could be a program too.

Dong Shin 12.27.2010

  • helped Christine with Maven stuff
  • Nexus Maven Repo Server unstable?
    • 1.8 crashed after 20 mins.
    • back to 1.7 from 1.8, looks stable now….
  • Continue working on DataManager and DataObject
    • MySQLDataManager and MySQLDataObject extended from base class
    • base classes modified to support more variables/methods
    • testing DataManager and DataObject

Mike 12.27.2010

  • Investigating the Flex Text Layout Framework
  • The Good:
    • The mark-up language looks very similar to HTML and classes exist for importing and exporting from several sources
    • The language can be read by many existing flex components including TextArea, RichText, and RichEditableText
    • A fairly nice open-source text editor component exists
  • The Bad:
    • Simple things like lists with bullets are not yet supported
    • FlowText does not actually flow around things until 2.0 is released with the Flex 4.5 SDK along with many other needed features
  • I plan on making a Report application which will be able to contain other applications such as a rich text widget, advanced data grids, charts, and anything else we come up with down the line.  It will lay them out according to whatever layout the user wants and hopefully look just like a report would on paper.  I think the first iteration will read a config in from a xml file and the next version may have editing similar to a wiki page.
  • When working on the report widget I started thinking about how widgets will communicate with each other so I decided to refresh my memory on some existing popular flex application frameworks:
    • Cairngorm – not very dynamic out of the box
    • PureMVC – Could work but it completely ignore the built in eventing of flex and makes its own publish/subcribe methods…. so every view component needs to be wrapped in another layer to translate events.  This is, of course, a good idea to make reusable widgets but if you’re already doing all this extra work for your widgets, why not use your own architecture instead?

Phil 12.27.2010

8:00 – 4:00 VISIBILITY

  • I hereby declare that this is the festival of Contractorious. It covers the time between Christmas and New Years at Government facilities
    • Monday – The Festival of Light Traffic: Here we revel in the ability to drive anywhere at any time, at or above the posted speed limit
    • Tuesday – The Celebration of Easy Parking: In which we park close enough to the buildings we work at so we do not freeze to death in our sojourn across the Parking Lots Most Remote
    • Wednesday – No Meeting Day: We would gather to celebrate this, but it might be misinterpreted as a meeting
    • Thursday – The Day of Just Showing Up: We celebrate by just making it in. Observing this by napping at the desk or by leaving early is acceptable.
  • Had some scary flashbacks to text flow containers. Did find a useful article: http://devgirl.wordpress.com/2010/04/26/flex-4-and-the-text-layout-framework/
  • Starting to try some test applications with the DJ_Project
    • SimpleWebBrowserExample – Too cool. Handles flash and everything
    • Walking through the code for this example.
    • Working on the HTML Editor example. I needed to go out and get the zip files for CKeditor, FCKeditor, and TinyMCE editors, and add then to the classpath so that the app could find and launch them. Not sure how it’s doing that yet. I’m gussing that it’s related to the same way that the browser is incorporated. Not sure that it matters for what we’ll be doing, which is more along the lines of raiding eclipse for components and then adding them in in a more direct (i.e. integrated to work with compiler/debugger output). We’ll see.
  • Last thing to check out is a way to communicate between the IDE and the Client. Aaron suggested that Google Protocol Buffers were cool, easy and fast. Looking into them now.

Christine 12.23.2010

  • Making some progress on the MavenAssist / environment issue. Earlier, rather than running the archetype command through MavenAssist, I set up the project then ran the command via terminal. Project created successfully and I was then able to use MA to view the POM and use some of its other features.
  • Question: is there a problem with http://www.fgmdev.com:8081/ ? Couldn’t set the POM of the project. Received “Unable to set repository. Path = [http://www.fgmdev.com:8081/nexus/content/groups], name = [pulbic/] error = Connection refused”. Tried to access URL in browser and same thing.