#!/usr/bin/ruby # author: nishiki # mail: nishiki@yaegashi.fr require 'rubygems' require 'i18n' module MPW class Item attr_accessor :error_msg attr_accessor :id attr_accessor :name attr_accessor :group attr_accessor :host attr_accessor :protocol attr_accessor :user attr_accessor :password attr_accessor :port attr_accessor :comment attr_accessor :last_edit attr_accessor :last_sync attr_accessor :created # Constructor # Create a new item # @args: options -> a hash of parameter # raise an error if the hash hasn't the key name def initialize(options={}) if not options.has_key?(:name) or options[:name].to_s.empty? @error_msg = I18n.t('error.update.name_empty') raise @error_msg end if not options.has_key?(:id) or options[:id].to_s.empty? or not options.has_key?(:created) or options[:created].to_s.empty? @id = generate_id @created = Time.now.to_i else @id = options[:id] @created = options[:created] @last_edit = options[:last_edit] options[:no_update_last_edit] = true end update(options) end # Update the item # @args: options -> a hash of parameter # @rtrn: true if the item is update def update(options={}) if options.has_key?(:name) and options[:name].to_s.empty? @error_msg = I18n.t('error.update.name_empty') return false end @name = options[:name] if options.has_key?(:name) @group = options[:group] if options.has_key?(:group) @host = options[:host] if options.has_key?(:host) @protocol = options[:protocol] if options.has_key?(:protocol) @user = options[:user] if options.has_key?(:user) @password = options[:password] if options.has_key?(:password) @port = options[:port].to_i if options.has_key?(:port) and not options[:port].to_s.empty? @comment = options[:comment] if options.has_key?(:comment) @last_edit = Time.now.to_i if not options.has_key?(:no_update_last_edit) return true end # Update last_sync def set_last_sync @last_sync = Time.now.to_i end # Delete all data # @rtrn: true def delete @id = nil @name = nil @group = nil @host = nil @protocol = nil @user = nil @password = nil @port = nil @comment = nil @created = nil @last_edit = nil @last_sync = nil return true end def empty? return @name.to_s.empty? end def nil? return false end # Generate an random id private def generate_id return ([*('A'..'Z'),*('a'..'z'),*('0'..'9')]).sample(16).join end end end