Skip to content

Instantly share code, notes, and snippets.

@ryancutter
ryancutter / application
Created May 6, 2012 03:28
Simple Python/Tornado web server tailored for hosting on OpenShift (https://openshift.redhat.com)
#!/usr/bin/python
import os
virtenv = os.environ['APPDIR'] + '/virtenv/'
os.environ['PYTHON_EGG_CACHE'] = os.path.join(virtenv, 'lib/python2.6/site-packages')
virtualenv = os.path.join(virtenv, 'bin/activate_this.py')
try:
execfile(virtualenv, dict(__file__=virtualenv))
except IOError:
pass
import os, paramiko
USERNAME = "username"
PASSWORD = "password"
trans = paramiko.Transport(("remotehost", 22))
trans.connect(username=USERNAME, password=PASSWORD)
sftp = paramiko.SFTPClient.from_transport(transport)
local_dir = "/path/to/local/files"
final DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss'Z'");
final String timestampString = "2014-03-09T02:01:47Z"
final DateTime dateTime = dateTimeFormatter.parseDateTime(timestampString);
// We have a lot of residences in our portfolio. There would probably be many methods in addition to this one.
public class Residence {
// Accept a visitor object so it can do something
void accept(Visitor visit);
}
// We have detached houses
public class DetachedHouse implements Residence {
// imagine getters and setters for these values
private double squareFeet;
db=# create table object_type (id bigint, parent_id bigint, label text, location text, direct_location boolean);
db=# select * from object_type;
id | parent_id | label | location | direct_location
-----+-----------+-------------+------------+-----------------
100 | 0 | book | main floor | t
101 | 100 | non-fiction | main floor | f
102 | 101 | history | main floor | f
103 | 102 | ww2 | main floor | t
104 | 101 | biography | 2nd floor | t
db=# create table object_type (id bigint, parent_id bigint,
label text, location text, direct_location boolean);
db=# select * from object_type;
id | parent_id | label | location | direct_location
-----+-----------+-------------+------------+-----------------
100 | 0 | book | main floor | t
101 | 100 | non-fiction | main floor | f
102 | 101 | history | main floor | f
103 | 102 | ww2 | main floor | t
item
book (main floor)*
non-fiction (main floor)
history (main floor)
ww2 (main floor)*
biography (2nd floor)*
fiction (main floor)
update object_type set location = 'new floor' where id in (
with recursive tree (child) as (
values(cast(100 as bigint))
union
select ot.id from object_type ot, tree where ot.parent_id = child and ot.direct_location = false)
select child from tree)
db=# select * from object_type;
id | parent_id | label | location | direct_location
-----+-----------+-------------+------------+-----------------
103 | 102 | ww2 | main floor | t
104 | 101 | biography | 2nd floor | t
100 | 0 | book | new floor | t
101 | 100 | non-fiction | new floor | f
102 | 101 | history | new floor | f
105 | 100 | fiction | new floor | f
<named-native-query name="ObjectType.updateLocation">
<query>
<![CDATA[
update object_type set location = :location where id in (
with recursive tree (child) as (
values(:parent_id)
union
select ot.id from object_type ot, tree where ot.parent_id = child and ot.direct_location = false)
select child from tree)
]]>