Tuesday, May 31, 2011

Development of messenger system.
The messenger system is divided into 2 parts, Server part and Client part.
In the client part, user can login by entering username then the list of logged in user will appear in the server side. In the server side, message can be sent to a selected user or broadcasted to all user. This system utilize Spring framework, Swing, JMS, ActiveMQ, SLF4J, Logback, MigLayout.

Development of SMS system.
There are 2 parts in this system, Marketing and Customer Service parts.
Marketing part can do the following functions :
- upload phone numbers from ms-excel document
- send an sms to some receivers.
- display list of sent sms (outbox)
Costumer Service part can do the following functions :
- display list of received sms (inbox)
- select one sms from the list then display the detail of selected sms
- reply an sms.
This project utilize Spring framework, Swing, SLF4J, logback, JGoodies Binding, Ozeki SMS Gateway, MySQL, MigLayout.



http://www.ibm.com/developerworks/java/tutorials/j-springswing/
http://sciencefair.math.iit.edu/about/tortoisesvn_tutorial.html

Thursday, May 26, 2011

http://smslib.org/doc/

JGoodies Binding
http://jnb.ociweb.com/jnb/jnbJun2005.html

------------------------------------------------------------------------------------------

MigLayout
http://www.devx.com/Java/Article/38017/1954

Although MigLayout comes with a wide variety of keywords, there are certain ones that you will find yourself using most often, namely:
  • wrap: Used on a control (e.g., add(new JButton("OK"),"wrap")), it tells the layout to wrap to the next line.
  • wrap x: Used as a global layout constraint (e.g., new MigLayout("wrap 3")), it tells the layout to automatically wrap to the next line every x controls that are added.
  • span: Used on a control, it tells the control to occupy the remainder of the row.
  • span x | span x y: Used on a control, it tells the layout that this control will occupy a cell that spans x columns (or x columns and y rows)
  • split | split x: Used on a first control in a cell, it tells the layout manager to split the cell so that multiple controls can be added into it. The next x controls that will be added will automatically be in the same cell (or if the split is used without a value, it will wait until the next wrap keyword is encountered).
  • grow: Used at a layout, column, row, or control level, it tells basically the layout to occupy the full available space. For example, if you wanted to define a layout with three columns where the middle one grows as the window expands, you would define it as new MigLayout("","[] [grow] []").
  • top, left, bottom, right: These are basic vertical and horizontal alignment indicators that can be used at any level (layout, column, row, or control).
  • flowy: It changes the flow from horizontal to vertical.
  • sg x: Used on a control, sg stands for size group. It allows you to indicate that multiple controls should have the same size. This is very useful when you want all command buttons to be of the same width.






1006

Monday, May 23, 2011

Learn about
- SLF4J (and Logback)
- JUnit
------------------------------------------
SLF4J

http://www.catosplace.net/blogs/personal/?p=442

http://blog.springsource.com/2009/12/04/logging-dependencies-in-spring/

http://blog.espenberntsen.net/
In addition to the extra flexibility, the API also contains a nice feature with support for arguments.
logger.debug("The date is: {}", date);
The old way with Log4J:
if (logger.isDebugEnabled()) {
logger.debug("The date is: " + date);
}
Both examples prints:
DEBUG [demo.Slf4jDemo] - <The date is: Sun Jun 06 11:34:11 CEST 2010>
The difference is that SLF4J doesn’t merge the dynamic and static data into a new string in the debug method, but sends the dynamic part(s) as argument(s). If the logger is configured to only log messages with info level or higher, the debug message above gets discarded without any string processing and without the need for an extra if sentence for performance reasons.

------------------------------------------

JUnit

http://www.jaredrichardson.net/articles/junit-tutorial.html
http://efreedom.com/Question/1-4183021/Looking-Tutorial-Using-JUnit-Intellij-IDEA-9x

http://tutorials.jenkov.com/java-unit-testing/running-tests-with-idea.html

------------------------------------------

http://code.google.com/intl/id-ID/javadevtools/wbpro/layoutmanagers/swing/miglayout.html

------------------------------------------

Spring Recipes ~ A Problem-Solution Approach ( 2010 - 1430224991 )
until page 130

------------------------------------------

1003
sammy yusuf - asma Allah

Friday, May 20, 2011

There are 2 options for broadcast :
1. server send message to a topic then the client must listen to the topic (clients also have to listen to their temp queue).
2. server send message to all temporary queue of connected clients, in this case clients don't have to listen to the topic.

We will chose option #1 as planned before.

Todo:
- make the list of clients taller (learn swing, layout mgr & etc.)
spClients.setBorder(new TitledBorder(BorderFactory.createEmptyBorder(), "Choose Client :"));
spClients.setPreferredSize(new Dimension(100, 200));
spClients.getViewport().add(lstClients);
pnClients.add(spClients);

1011

Thursday, May 19, 2011

solution:
When a client connect, server create a temporary queue for the client.
When the client disconnect, the temporary queue will be deleted.

JMS book page 260 :
While any client may send messages on another client’s temporary queue, only the sessions that are associated with the JMS client connection that created the temporary queue may receive messages from it.

1002

Thursday, May 12, 2011

Spring in Action ( 2007 - 1933988134 )
until page 428

about JMS in Spring book
384 - 423 = 39 pages

---

Spring Recipes ~ A Problem-Solution Approach ( 2010 - 1430224991 )
JMS 803 - 829 = 26 pages

---

about Spring in JMS book
177 - 213 = 36 pages











1005

Wednesday, May 11, 2011

Spring in Action ( 2007 - 1933988134 )
until page 135, 203, 228, 249, 308, 408











glodok - harmoni = 20 menit

Tuesday, May 10, 2011

Read
Swing, Second Edition ( 2003 - 193011088X )
until page 116

Read
Spring Recipes ~ A Problem-Solution Approach ( 2010 - 1430224991 )
until page 41

Spring in Action ( 2007 - 1933988134 )
72

0835 -> 0940

Monday, May 9, 2011

Read
Swing, Second Edition ( 2003 - 193011088X )
until page 105

Read and try Swing Tutorial

until table

0830 -> 0930

Friday, May 6, 2011

Read Thinking in Java Book until page
641
804

Beginning Java Objects - Modelling 466

1010

1139-1236 = 57

Thursday, May 5, 2011

Read Thinking in Java Book until page 332

-- about container/collection

* container/collection is important


1020

Wednesday, May 4, 2011

* What's new in Java 5
-- Enhanced for Loop
-- Autoboxing/Unboxing
-- Typesave Enums
-- Varargs
-- Static Import
-- Annotations (metadata)

* Read Thinking in Java Book until page 258
-- protected can be accessed by
--- same package
--- derived classes

Tuesday, May 3, 2011

* Spring

- Read and try Introduction to Spring using Swing tutorial

- Concept of Dependency Injection (Inversion of Control)

- Spring Hello World


* Swing

- Swing JForm


* Java

- Java Annotation


tomorow :
what's new in java 6 & 5