Class: ScanearDisco

Inherits:
Object
  • Object
show all
Defined in:
lib/scanear_disco.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeScanearDisco

/** Constructor */



32
33
34
35
36
37
38
39
40
# File 'lib/scanear_disco.rb', line 32

def initialize()
 #puts "Scaneando..."
 cf = CfYiyi.new()
 if (cf.control())
  @control = true
  @directorio = Array.new
  @nivel = -1
 end
end

Instance Attribute Details

#directorioObject (readonly)

Returns the value of attribute directorio.



29
30
31
# File 'lib/scanear_disco.rb', line 29

def directorio
  @directorio
end

#nivelObject (readonly)

Returns the value of attribute nivel.



29
30
31
# File 'lib/scanear_disco.rb', line 29

def nivel
  @nivel
end

#raizObject (readonly)

Returns the value of attribute raiz.



29
30
31
# File 'lib/scanear_disco.rb', line 29

def raiz
  @raiz
end

Instance Method Details

#adicionarElementos(elementoArray, rama) ⇒ Object



108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# File 'lib/scanear_disco.rb', line 108

def adicionarElementos(elementoArray,rama)
 elementorow = nil
 if rama.isRoot?
  elementorow = Element.new("rows")
  elementoArray.pop()
  elementoArray.push(elementorow)
  elementorow = Element.new("row")
  elementorow.attributes["id"] = rama.content
  elementocell = Element.new("cell")
  elementocell.attributes["image"] = "folder.gif"
  elementocell.text = rama.name
  elementorow.add elementocell
  elementoArray.push(elementorow)
 else
  elementorow = Element.new("row")
  elementorow.attributes["id"] = rama.content
  elementocell = Element.new("cell")
  elementocell.attributes["image"] = "folder.gif"
  elementocell.text = rama.name
  elementorow.add elementocell
  elementoArray.push(elementorow)
 end
 if rama.hasChildren?
  hijos = rama.children
  for i in 0..hijos.length()-1
   adicionarElementos(elementoArray,hijos[i])
  end
 end
 elemento2 = elementoArray.pop()
 elemento1 = elementoArray.pop()
 elemento1.add elemento2
 elementoArray.push(elemento1)
end

#generarXML(archivo) ⇒ Object



142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
# File 'lib/scanear_disco.rb', line 142

def generarXML(archivo)
 raiz = @raiz
 file = Kernel.open(archivo.to_s,"w+")
 linea = '<?xml version="1.0" encoding="UTF-8"?>' + "\n"
 linea = linea + '<!DOCTYPE rows SYSTEM "dhtmlxtreegrid.dtd">' + "\n"
 doc = Document.new(linea)
 #doc << XMLDecl.new()
 docArray = Array.new
 docArray.push(doc)
 elemento = nil
 elementoArray = Array.new
 elementoArray.push(elemento)
 adicionarElementos(elementoArray,raiz)
 j=0
 while j<elementoArray.length()-1
  elemento2 = elementoArray.pop()
  elemento1 = elementoArray.pop()
  elemento1.add elemento2
  elementoArray.push(elemento1)
 end
 elemento = elementoArray.pop()
 doc.add_element elemento
 doc.write(file,0)
 file.close()
end

#getArchivo(archivo) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/scanear_disco.rb', line 43

def getArchivo(archivo)
 nombrearchivo = ""
 r=archivo.to_s.size()
 while r>=0
  if archivo.to_s[r,1] != "/"
   nombrearchivo = archivo.to_s[r,1] + nombrearchivo
  else
   r=0
  end
  r=r-1
 end
 return nombrearchivo
end

#imprimirArbolObject



103
104
105
106
# File 'lib/scanear_disco.rb', line 103

def imprimirArbol()
 #@raiz.each { |node| node.content.reverse; puts node }
 @raiz.printTree(3)
end

#scandisco(nodo, dirActual) ⇒ Object

/* Scanea el disco a partir de un directorio.

  • Para el parametro

  • nodo siempre debe ser: nil para la primera llamada

  • DirActual usar para:

  • windows: C:/archivos de programa

  • linux : /var/lib

*/



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/scanear_disco.rb', line 65

def scandisco(nodo,dirActual)
 if nodo == nil
  nombrearchivo = getArchivo(dirActual)
  nodo = Tree::TreeNode.new(nombrearchivo, dirActual) 
  @raiz = nodo
 end
 existe = false
 if (@control)
  if (File.directory?(dirActual))
   existe = true
   @nivel = @nivel + 1
   @directorio[@nivel] = dirActual
   Dir.chdir(dirActual)
   archivos = Dir.glob('*')
   if (archivos.size()-1>=0)
    j = archivos.size()-1
    for i in 0..j
     nombrearchivo = getArchivo(archivos[i].to_s)
     rama = Tree::TreeNode.new(nombrearchivo, dirActual+'/'+archivos[i].to_s)
     nodo.add(rama)
     if (File.directory?(archivos[i].to_s))
      dirActual = dirActual+'/'+archivos[i].to_s
      scandisco(rama,dirActual)
      @nivel = @nivel - 1
      dirActual = @directorio[@nivel]
      Dir.chdir(dirActual)
     end
    end
   end
  end
 else 
  existe = false
  dirActual = new String("")
  #puts "Directorio no existe"
 end
 return existe
end