ProCol - PowerPoint PPT Presentation

About This Presentation
Title:

ProCol

Description:

Provides file repository, users are able to check out files ... Message Composers. Dockable Windows. Model. Messages. User. Project. Communication from Server ... – PowerPoint PPT presentation

Number of Views:26
Avg rating:3.0/5.0
Slides: 19
Provided by: mathUaa
Category:
Tags: procol | composers

less

Transcript and Presenter's Notes

Title: ProCol


1
ProCol A jEdit Plugin for Remote Project
Collaboration Justin Dieters Spring
2004 CS470 Final Presentation
2
What is ProCol?
  • Plugin for the jEdit text editor
  • Facilitates on-line collaboration between
    developers
  • Small groups (2-10 people)
  • Small to medium sized projects
  • Provides file repository, users are able to check
    out files
  • Provides communication and project management
    functions
  • Quick and easy to set up and use
  • Current solutions - CVS, SourceForge, gForge,
    etc.
  • Complex to set up
  • Time-consuming to maintain
  • Not practical for small projects

3
Requirements
  • Not developed for a specific client
  • Requirements developed by looking at existing
    solutions
  • Possible improvements
  • Past experience
  • Scope of project was fairly large
  • Open-ended requirements
  • Goal Release usable beta version by end of class
  • Development continued as an open-source software
    project (GPL)
  • Able to be extended by others
  • Clients for other development environments
  • Web-based clients

4
Client Requirements
  • Compact and simple graphical interface
  • Able to integrate well with jEdit's user
    interface
  • Complex functionality in separate dialog windows
  • File tree
  • Indicate checkout status with bold text
  • Get information about individual files
  • User list
  • Windows for file transfer, messaging, etc
  • Able to be docked
  • Project snapshot

5
Server Requirements
  • Handles multiple simultaneous connections from
    clients
  • Uses SSL sockets for security
  • Information stored on disk in properties files
  • Readable by the Java Properties class
  • Do not need separate database
  • Java uses hash tables for this
  • Maintain project and user information
  • Simple configuration files
  • Store versioning/changelog information for each
    file
  • Store communication and project management
    messages
  • Automatic file backup
  • Accidental or malicious deletion/changes

6
Plugin Interface
Options
Connect
Help
Project Info
Change Project
File Tree
Checked-out File
Popup Menu
Upload file/directory
New file/directory
Snapshot
User List
Private Messages
Bug List
Public Messages
Todo List
Progress Bar
7
Connecting to Server
Connect
Login
Join Project
8
File Management
File Info
File Check-in
9
Communication Tools
Reading messages
Composing a message
10
Project Management Tools
Bug List
Posting a New Bug
11
Docked Windows
12
Client Architecture
GUI
Model
Dockable Windows
Project
Message Composers
User
Misc. Dialogs
Messages
Sections communicate using Observer/Observable
pattern
Network
ProColClient
Communication to Server
Communication from Server
IncomingMessageHandler
OutgoingMessageHandler
MessageFactory
PacketFactory
13
Server Architecture
Model
Projects
Users
ServerConnection maintains reference to currently
opened project
ProColServer
Network
ServerConnection
Communication to Client
Communication from Client
IncomingMessageHandler
OutgoingMessageHandler
MessageFactory
PacketFactory
14
Network Protocol
Data (0 to 2032 bytes)
Header (16 bytes)
messageID
requestType
dataRemain
dataSize
Data Section
Packet (2048 bytes max)
  • Messages are broken into packets of maximum 2048
    bytes
  • 16 byte header followed by optional data section
  • Allows low priority messages to be interrupted to
    send high priority message
  • Less than 1 overhead per packet for full data
    section
  • PacketFactory class generates packets to be sent
  • Data can be drawn from Strings, byte arrays,
    files, etc
  • Automatically determines which packet to send
    next based on priority
  • MessageFactory class reassembles packets into
    original messages
  • Handed off to Observers for handling

15
What Worked?
  • Networking
  • Spent large percentage of time developing
    networking
  • Packets and priority queues
  • Anonymous SSL security
  • Open, easy protocol, able to be used by other
    ProCol clients/servers
  • Dockable windows
  • Integrate well with jEdit
  • Able to use as normal window or docked
  • Store settings in Properties files
  • Labels, buttons, error messages, etc
  • Central location for changes, applied throughout
    program

16
What Did Not Work?
  • NIO (New I/O)
  • Java's new I/O API
  • Good in theory, bad in implementation
  • Many problems in Sun's code that I was unable to
    work around
  • 2 weeks wasted with troubleshooting and rewriting
  • Rewrote large portions of networking code to
    revert back to classic networking
  • Too many features
  • Not enough time to implement everything I wanted
  • All required features implemented, but some are
    rather basic

17
Conclusion
  • Was project successful?
  • Yes, all requirements satisfied
  • Proved usable during testing
  • Interest expressed by jEdit community
  • Will be released under GPL
  • May continue development
  • What did I learn?
  • Java features SSL, NIO, Threads, Properties
  • Implementing design patterns Observer, MVC,
    Factory
  • jEdit Plugin programming, Beanshell scripting
  • Apache Ant automated compiling and packaging

18
Questions? Justin Dieters Spring
2004 CS470 Final Presentation
Write a Comment
User Comments (0)
About PowerShow.com