class JavaClass::ClassList::PackageEntry

A package in the List. A package contains ClassEntry.

Author

Peter Kofler

Attributes

name[R]
version[R]

Return the list of versions this package exists. This is the sum of all versions of all classes in the package.

Public Class Methods

new(name, vers=0) click to toggle source

Create a new package with name name and first version vers which is the version of the first class in the package.

# File lib/javaclass/classlist/package_entry.rb, line 15
def initialize(name, vers=0)
  @name = name
  @version = [vers]
  @classes = Hash.new # class_name (most likely String) => ClassEntry
end

Public Instance Methods

<=>(other) click to toggle source

Sorting in packages is: java.lang, other java.*, javax.* and then others.

# File lib/javaclass/classlist/package_entry.rb, line 34
def <=>(other)
  if @name =~ /^java\.lang$/ and other.name !~ /^java\.lang$/
    -1
  elsif @name !~ /^java\.lang$/ and other.name =~ /^java\.lang$/
    1
  elsif @name =~ /^java\./ and other.name !~ /^java\./
    -1
  elsif @name !~ /^java\./ and other.name =~ /^java\./
    1
  elsif @name =~ /^javax\./ and other.name !~ /^javax\./
    -1
  elsif @name !~ /^javax\./ and other.name =~ /^javax\./
    1
  else
    @name <=> other.name
  end
end
add_class(class_name, is_public, version) click to toggle source
# File lib/javaclass/classlist/package_entry.rb, line 21
def add_class(class_name, is_public, version)
  @version << version unless @version.include? version
  @version = @version.sort

  unless @classes.has_key?(class_name)
    @classes[class_name] = ClassEntry.new(self, class_name, is_public, version)
    # class_name does not need to be frozen because it's not read from the keys
  else
    @classes[class_name].update(version, is_public)
  end
end
classes() click to toggle source

Return the classes in this package.

# File lib/javaclass/classlist/package_entry.rb, line 53
def classes
  @classes.values.sort
end
size() click to toggle source

Return the number of classes in this package.

# File lib/javaclass/classlist/package_entry.rb, line 58
def size
  @classes.size
end
to_package_shortcut_s(minversion, maxversion) click to toggle source

Special version of to_s for package shortcut. A package needs minversion and maxversion to determine if the whole package was dropped.

# File lib/javaclass/classlist/package_entry.rb, line 68
def to_package_shortcut_s(minversion, maxversion)
  "#{@name}#{format_version(minversion, maxversion)} - \n" +
  classes.collect { |c| c.to_package_shortcut_s }.join
end
to_s() click to toggle source
# File lib/javaclass/classlist/package_entry.rb, line 62
def to_s
  @name
end

Private Instance Methods

format_version(minversion, maxversion) click to toggle source
# File lib/javaclass/classlist/package_entry.rb, line 75
def format_version(minversion, maxversion)
  is_newer = @version.first > minversion
  is_outdated = @version.last < maxversion
  line =
  " [#{ is_newer  ? @version.first.to_s : ''}" +
  "#{is_outdated ? '-' + @version.last.to_s : ''}" +
  "]"
  line.sub(/(\d)-\1/, "only \\1").sub(/ \[\]/, '')
end