The format of the files is a bitt different, the Quotes I will save and read as they are, but the price list will have a different format that will look as jSon and is saved in a way that will be easy to read with pattern matching. For the matter of fact also the Stock-quotes for a single instrument will be read and transformed to a list of Quote's with pattern matching.
FileHandler.scala
That is a lot of code that I wrote on the fly, but not as much as it would have been to do the same thing in Java. the nice thing is the pattern matching, that saves a lot pain that Java code would bring, for example reading every line in the file would not be more code, but also creating and getting the values to objects would give a lot of more code.[coming... Java code to do it as a comparison]
checkDir: is a method to create directory structure if it does not exist. Actually the first time loading the quotes there is no /files dir if it is not created manually, to avoid crashing, and open upp for the possibility to later use some config to have the data files in a directory of choice this is to ensure that the supplied configured dir will be created.
saveDailyQuotes: traverse the content of a daily quote file and calls to save single quote and collect the price lists and calls to save these.
saveStockPriceList: saves the current instruments divided in their lists to a file.
saveQuoteToFile: append a single quote to its data file.
Finally the methods for loading price lists and a single instrument
loadPriceLists: loads the pice lists back to a map with a list name and a list of Instruments. (Actually it is note yet finished, since I want to think out a way to avoid having a mutable HashMap, now it only prints out what it gets.)
loadInstrument: loads the file of a single stock to a list of Quote's
I am not completely happy with it, there is some duplication of code, for example I create new Writers in every method that save things. There is certainly things that can improve here. However, refactoring is a later issue, and this does what I want it to do, so for now it will have to do.
Now the interesting part is beginning to appear, next thing is to make functionality to take car of the technical stuff for the charts to be drawn.
No comments:
Post a Comment