Created
June 25, 2011 17:30
-
-
Save sivajag/1046688 to your computer and use it in GitHub Desktop.
core.clj
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defproject address_book "1.0.0-SNAPSHOT" | |
:description "Address Book" | |
:dependencies [[org.clojure/clojure "1.2.1"] | |
[org.clojure/clojure-contrib "1.2.0"] | |
[compojure "0.6.2"] | |
[ring/ring-core "0.3.7"] | |
[ring/ring-jetty-adapter "0.2.3"]] | |
:dev-dependencies [[swank-clojure "1.2.1"]] | |
:main address-book.core) | |
(ns address-book.core | |
(:gen-class) | |
(:use [compojure.core] | |
[ring.adapter.jetty]) | |
(:require [compojure.route :as route])) | |
(defroutes rts | |
(GET "/" [] "Address Book") | |
(route/not-found "Page not found")) | |
(def app | |
rts) | |
(defn -main [] | |
(run-jetty app {:port 8080 | |
:join? false})) | |
;;(swank.swank/start-server "/tmp/swank.port" :port 4005 :dont-close true) | |
(ns address-book.address | |
(:use [address-book.utils number]) | |
(:refer-clojure :exclude (find create))) | |
(def STORE (atom {:1 {"id" :1 "name" "Siva Jagadeesan" "street1" "88 7th" "street2" "#203" "city" "Cupertino" "country" "USA" "zipcode" 98802}})) | |
(defn to-keyword [num] | |
(if-not (keyword? num) | |
(keyword (str num)) | |
num)) | |
(defn random-number [] | |
(to-keyword (.getTime (Date.)))) | |
(defn create [attrs] | |
(let [id (random-number) | |
new-attrs (merge {:id id} attrs)] | |
(swap! STORE merge {id new-attrs}) | |
new-attrs)) | |
(defn find-all [] | |
(vals @STORE)) | |
(defn find [id] | |
((to-keyword id) @STORE)) | |
(defn update [id attrs] | |
(let [updated-attrs (merge (find id) attrs)] | |
(swap! STORE assoc (to-keyword id) updated-attrs) | |
updated-attrs)) | |
(defn delete [id] | |
(let [old-attrs (find id)] | |
(swap! STORE dissoc (to-keyword id)) | |
old-attrs)) | |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" | |
"http://www.w3.org/TR/html4/strict.dtd"> | |
<html lang="en"> | |
<head> | |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> | |
<title>My Address Book</title> | |
<link href="/css/address.css" media="screen" rel="stylesheet" type="text/css" /> | |
<link href="/css/ui-lightness/jquery-ui-1.8.4.custom.css" media="screen" rel="stylesheet" type="text/css" /> | |
<script src="/js/jquery-1.4.2.min.js" type="text/javascript"></script> | |
<script src="/js/jquery-ui-1.8.4.custom.min.js" type="text/javascript"></script> | |
<script src="/js/jquery.form.js" type="text/javascript"></script> | |
<script src="/js/address_book.js" type="text/javascript"></script> | |
<script src="/js/address_list.js" type="text/javascript"></script> | |
</head> | |
<body> | |
<div id="wrap"> | |
<div id="header"><h1>My Address Book</h1></div> | |
<div id="main"> | |
<table id="address"> | |
<tr><td>Name</td><td id="name"/></tr> | |
<tr><td>Street1</td><td id="street1"/></tr> | |
<tr><td>Street2</td><td id="street2"/></tr> | |
<tr><td>City</td><td id="city"/></tr> | |
<tr><td>Country</td><td id="country"/></tr> | |
<tr><td>ZipCode</td><td id="zipcode"/></tr> | |
</table> | |
<table id="address-list" border="1" width="100%" rules="rows" align="center"> | |
<tr> | |
<th>Name</th> | |
<th>Action</th> | |
</tr> | |
<tr> | |
<td >row 1, cell 1</td> | |
<td align="center">row 1, cell 2</td> | |
</tr> | |
</table> | |
</div> | |
<div id="sidebar"> | |
<form id="address-form" class="formular" method="post" action="/addresses"> | |
<fieldset class="login"> | |
<legend>New Address</legend> | |
<div> | |
<label for="name">Name</label> <input type="text" id="name" name="name"> | |
</div> | |
<div> | |
<label for="street1">Street1</label> <input type="text" id="street1" name="street1"> | |
</div> | |
<div> | |
<label for="street2">Street2</label> <input type="text" id="street2" name="street2"> | |
</div> | |
<div> | |
<label for="city">City</label> <input type="text" id="city" name="city"> | |
</div> | |
<div> | |
<label for="country">Country</label> <input type="text" id="country" name="country"> | |
</div> | |
<div> | |
<label for="zipcode">ZipCode</label> <input type="text" id="zipcode" name="zipcode"> | |
</div> | |
<input class="submit" type="submit" value="Create"/> | |
</fieldset> | |
</form> | |
</div> | |
<div id="edit-dialog" > | |
<form id="edit-address-form" class="formular" method="put" action="/addresses"> | |
<fieldset class="login"> | |
<legend>Edit Address</legend> | |
<div> | |
<label for="name">Name</label> <input type="text" id="name" name="name"> | |
</div> | |
<div> | |
<label for="street1">Street1</label> <input type="text" id="street1" name="street1"> | |
</div> | |
<div> | |
<label for="street2">Street2</label> <input type="text" id="street2" name="street2"> | |
</div> | |
<div> | |
<label for="city">City</label> <input type="text" id="city" name="city"> | |
</div> | |
<div> | |
<label for="country">Country</label> <input type="text" id="country" name="country"> | |
</div> | |
<div> | |
<label for="zipcode">ZipCode</label> <input type="text" id="zipcode" name="zipcode"> | |
</div> | |
<input class="submit" type="submit" value="Update"/> | |
</fieldset> | |
</form> | |
</div> | |
<div id="footer"> | |
<p><a href="TechbehindTech.com">TechBehindTech</a> -- Siva Jagadeesan</p> | |
</div> | |
</div> | |
</body> | |
</html> | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment