How to find number of JRE present on a computer?
How can i find the jre's present in working computer.
e.g i specified the path as c:/program files/java
it may contain jre1.4.0_14 and jre1.5.0_05
how can i search this and return the version?
A class should be written which can detect the Java Runtime Engines installed on a computer. The search will accept a list of folders as input.
Class 1: JRESearcher class
This method must conduct the search. It must search recursively in each folder supplied for a JRE. For each JRE that is located it must
public class JRESearcher {
public List<JREResult> search(List<File> folderList)
//code to do
- identify the version information
- create a JREResult object
- set the fields in the JREResult object
//end
All the JREResult's are returned as a list.
Class 2 : JREResult class
This class will hold the information on a located JRE. It should be as follows:
public class JREResult
// The location of the JRE. For example, C:\Program Files\Java\jdk1.5.0_14\jre. This is given by System.getProperty("java.home") when running the JRE
public File jrePath;
// e.g. "1.5.0_14". The string returned by "java -version" or given by System.getProperty("java.version") when running the JRE
public String java_version;
// e.g. 1. This is identified by parsing java_version
public int majorVersion;
// e.g. 5. This is identified by parsing java_version
public int minorVersion;
// e.g. 0. This is identified by parsing java_version
public int revision;
// e.g. 14. This is identified by parsing java_version
public int update;
* This method must parse java_version and set majorVersion, minorVersion, revision and update
public void interpretVersionString()
// TODO : code here which interprets java_version
public String toString()
String buf = "JRE " + java_version + " in " + jrePath.getPath() + "\n";
buf += "Major: " + majorVersion + " Minor: " + minorVersion + " Revision: " + revision + " Update: " + update;
return buf;
Class 3: JRESearcherTest class
The following code should be used (in a class called JRESearcherTest) for testing:
public static void main(String[] args)
List<File> folderList = new LinkedList<File>();
folderList.add(new File("C:/Program Files/Java"));
folderList.add(new File("C:/Program Files/Javasoft"));
JRESearcher searcher = new JRESearcher();
List<JREResult> jreList = searcher.search(folderList);
for(JREResult result : jreList)
System.out.println(result.toString() + "\n");
To identify the JRE version, do not use the folder name as the basis for the version. Instead the java executable must be interrogated (e.g. "java -version").
The code must be tested in scenarios where all JRE's are present (e.g JRE 1.6, 1.5, 1.4, 1.3, 1.2, 1.1) and with different updates.
Similar Messages
-
How to find number of lines in an internal table
Dear all,
how to find number of records present in an internal table.DESCRIBE TABLE
Syntax
DESCRIBE TABLE itab [KIND knd] [LINES lin] [OCCURS n].
Extras:
1. ... KIND knd
2. ... LINES lin
3. ... OCCURS n
Effect
This statement determines some properties of the internal table itab and assigns them to the specified variables. The various additions enable you to determine the table type, the number of currently filled rows and the initial memory requirement.
In addition, the system fields sy-tfill and sy-tleng are filled with the current number of table rows and the length of a table row in bytes.
Notes
For detailed information about an internal table, you should use the methods of RTTS of the DESCRIBE TABLE statement.
Without the specification of an addition, the statement DESCRIBE TABLE only sets the system fields sy-tfill and sy-tleng.
Addition 1
... KIND knd
Effect
The table type of the internal table itab is determined and a corresponding one-digit identification is assigned to the data object knd. A character-type data type is expected for the data object. The identifications are "T" for standard tables, "S" for sorted tables and "H" for hashed tables. These values are also defined as constants sydes_kind-standard, sydes_kind-sorted, and sydes_kind-hashed in the type group SYDES.
Addition 2
... LINES lin
Effect
The current number of table rows of the internal table itab is determined and is assigned to the data object lin.The data type i is expected for the data object.
Note
As of release 6.10, the current number of rows of an internal table can also be determined using the in-built function lines.
Addition 3
... OCCURS n
Effect
The initial memory requirement defined during the creation of the internal table with the addition INITIAL SIZE or the obsolete addition OCCURS is determined and assigned to the data object n. The data type i is expected for the data object.
Example
Descending sorting of a generically typed internal table in a subprogram. Since sorted tables cannot be sorted in a descending order, the table type is checked to avoid an exception that cannot be handled.
TYPE-POOLS sydes.
FORM sort_descending CHANGING itab TYPE ANY TABLE.
DATA tabkind(1) TYPE c.
DESCRIBE TABLE itab KIND tabkind.
IF tabkind = sydes_kind-standard OR
tabkind = sydes_kind-hashed.
SORT itab DESCENDING.
ELSEIF tabkind = sydes_kind-sorted.
MESSAGE '...' TYPE 'E'.
ELSE.
MESSAGE '...' TYPE 'E'.
ENDIF.
ENDFORM.
DESCRIBE FIELD INTO
Note
This statement is for internal use only.
It cannot be used in application programs.
Syntax
DESCRIBE FIELD dobj INTO td.
Effect
All characteristics of the field f, its components , sub-components etc. are displayed in the field td (type description). td has to be of the type SYDES_DESC, defined in Type Group SYDES. Because of this, the type group SYDES must be integrated into the ABAP-program with a TYPE-POOLS statement .
The structure SYDES_DESC has two table-type components TYPES and NAMES:
In TYPES, the tree structure of the type belonging to f is displayed. The components of a node are stored in the table TYPES in a continuous manner. Beginning and end of the line area that represents the components are stored in TYPES-FROM and TYPES-TO. The reference to the superior node can be found in TYPES-BACK. If no superior resp. subordinate node exists, then this is marked by the value 0 (For the relevance of further components, refer to the following sections).
The names of components, types etc. are not stored directly in TYPES. Instead, the components TYPES-IDX_... hold an index in the name table NAMES. The value 0 indicates that there is no reference to the name table.
NAMES contains the possibly fragmented names in the component NAMES-NAME. If a name continues in the following line, this is indicated by an asterisk ('*') in the component NAMES-CONTINUE.
The type description table (TYPES) not only stores information about the tree structure but also further information about the type of f resp. its components. This includes especially all information that can be determined using the usual additions to DESCRIBE FIELD. In detail, TYPES contains the following columns:
IDX_NAME
Component Name
IDX_USER_TYPE
Name of a user-defined type, i.e., a type that was defined through its TYPES-statement. Derived types (... TYPE A-B) and structures from the ABAP-Dictionary are not considered to be user-defined types.
CONTEXT
For user-defined types only: The context, in which the type is defined. Possible values are defined in the constant SYDES_CONTEXT of the type group SYDES. Please only use these constants to carry out a comparison. In detail, we distinguish between the following type contexts:
SYDES_CONTEXT-PROGRAM: Program-global type
SYDES_CONTEXT-FORM : FORM-local type
SYDES_CONTEXT-FUNCTION: FUNCTION-local type
SYDES_CONTEXT-METHOD : METHOD-local type
IDX_CONTEXT_NAME
For user-defined types only:
With a local context: The name of the FORM or FUNCTION, whose type was defined. The name of the associated program is then the first entry in the name table.
With a global context: The name of the program in which the type was defined.
IDX_EDIT_MASK
Conversion routine from the ABAP-Dictionary, is in accordance with the addition EDIT MASK at simple DESCRIBE.
IDX_HELP_ID
Help-Id when referencing to fields from the ABAP-Dictionary
LENGTH
Internal length, corresponds to the addition LENGTH at simple DESCRIBE
OUTPUT_LENGTH
Output length, corresponds to the addition OUTPUT-LENGTH at simple DESCRIBE
DECIMALS
Number of decimal digits, corresponds to the addition DECIMALS at simple DESCRIBE
TYPE
ABAP-Type, corresponds to the addition TYPE at simple DESCRIBE
TABLE_KIND
A table type is stored here for the components which represent an internal table. The same values are returned as with the variant DESCRIBE TABLE itab KIND k. Components which do not represent a table get the return value set to SYDES_KIND-UNDEFINED (see type group SYDES).
Example
Example definition of the complex data type EMPLOYEE_STRUC:
PROGRAM DESCTEST.
TYPES: BEGIN OF name_struc,
first TYPE c LENGTH 20,
last TYPE c LENGTH 20,
END OF name_struc,
BEGIN OF absence_time_struc,
day TYPE d,
from TYPE t,
to TYPE t,
END OF absence_time_struc,
phone_number TYPE n LENGTH 20,
BEGIN OF employee_struc,
id LIKE sbook-customid,
name TYPE name_struc,
BEGIN OF address,
street TYPE c LENGTH 30,
zipcode TYPE n LENGTH 4,
place TYPE c LENGTH 30,
END OF address,
salary_per_month TYPE p LENGTH 10 DECIMALS 3,
absent TYPE STANDARD TABLE OF absence_time_struc
WITH NON-UNIQUE DEFAULT KEY,
phone TYPE STANDARD TABLE OF phone_number
WITH NON-UNIQUE DEFAULT KEY,
END OF employee_struc.
You can determine the structure of the type EMPLOYEE_STRUC by collecting the type group SYDES as follows:
TYPE-POOLS: sydes.
DATA: employee TYPE employee_struc,
td TYPE sydes_desc.
DESCRIBE FIELD employee INTO td.
The following table shows a few selected columns of the type description table TD-TYPES. For a better overview, the names of the columns IDX_NAME, IDX_UERR_TYPE and IDX_EDIT_MASK have been shortened:
|FROM| TO |BACK|NAME|UTYP|EMSK|TYPE
|--||||||--
1 | 2 | 7 | 0 | 0 | 2 | 0 | v
2 | 0 | 0 | 1 | 6 | 0 | 4 | N
3 | 8 | 9 | 1 | 7 | 5 | 0 | u
4 | 10 | 12 | 1 | 8 | 0 | 0 | u
5 | 0 | 0 | 1 | 9 | 0 | 0 | P
6 | 13 | 13 | 1 | 11 | 0 | 0 | h
7 | 17 | 17 | 1 | 12 | 0 | 0 | h
8 | 0 | 0 | 3 | 13 | 0 | 0 | C
9 | 0 | 0 | 3 | 14 | 0 | 0 | C
10 | 0 | 0 | 4 | 15 | 0 | 0 | C
11 | 0 | 0 | 4 | 16 | 0 | 0 | N
12 | 0 | 0 | 4 | 17 | 0 | 0 | C
13 | 14 | 16 | 6 | 0 | 18 | 0 | u
14 | 0 | 0 | 13 | 20 | 0 | 0 | D
15 | 0 | 0 | 13 | 21 | 0 | 0 | T
16 | 0 | 0 | 13 | 22 | 0 | 0 | T
17 | 0 | 0 | 7 | 0 | 0 | 0 | N
Please note that the entries in rows 6 and 7 represent internal tables (ABAP-Type h). There is always an entry for the corresponding row type (rows 13 and 17) to an internal table.
The indices in the rows 5 to 7 refer to entries in the name table TD-NAMES. If you look, e.g., at row 3, you find the corresponding component name in TD-NAMES from row 7 (NAME) onward and the corresponding user type from row 5 (NAME_STRUC) onward.
In the name table TD-NAMES you find the following entries. Note that the names SALARY_PER_MONTH and ABSENCE_TIME_STRUC are stored in two parts:
|CONTINUE|NAME |CONTINUE|NAME
|--| -||--
1 | |DESCTEST 12 | |PHONE
2 | |EMPLOYEE_STRUC 13 | |FIRST
3 | |SBOOK-CUSTOMID 14 | |LAST
4 | |==ALPHA 15 | |STREET
5 | |NAME_STRUC 16 | |ZIPCODE
6 | |ID 17 | |PLACE
7 | |NAME 18 | * |ABSENCE_TIME_ST
8 | |ADDRESS 19 | |RUC
9 | * |SALARY_PER_MONT 20 | |DAY
10 | |H 21 | |FROM
11 | |ABSENT 22 | |TO -
How to find number of files in a folder using pl/sql
please someone guide as to how to find number of files in a folder using pl/sql
RegardsThe Java option works well.
-- results table that will contain a file list result
create global temporary table directory_list
directory varchar2(1000),
filename varchar2(1000)
on commit preserve rows
-- allowing public access to this temp table
grant select, update, insert, delete on directory_list to public;
create or replace public synonym directory_list for directory_list;
-- creating the java proc that does the file listing
create or replace and compile java source named "ListFiles" as
import java.io.*;
import java.sql.*;
public class ListFiles
public static void getList(String directory, String filter)
throws SQLException
File path = new File( directory );
final String ExpressionFilter = filter;
FilenameFilter fileFilter = new FilenameFilter() {
public boolean accept(File dir, String name) {
if(name.equalsIgnoreCase(ExpressionFilter))
return true;
if(name.matches("." + ExpressionFilter))
return true;
return false;
String[] list = path.list(fileFilter);
String element;
for(int i = 0; i < list.length; i++)
element = list;
#sql {
insert
into directory_list
( directory, filename )
values
( :directory, :element )
-- creating the PL/SQL wrapper for the java proc
create or replace procedure ListFiles( cDirectory in varchar2, cFilter in varchar2 )
as language java
name 'ListFiles.getList( java.lang.String, java.lang.String )';
-- punching a hole in the Java VM that allows access to the server's file
-- systems from inside the Oracle JVM (these also allows executing command
-- line and external programs)
-- NOTE: this hole MUST be secured using proper Oracle security (e.g. AUTHID
-- DEFINER PL/SQL code that is trusted)
declare
SCHEMA varchar2(30) := USER;
begin
dbms_java.grant_permission(
SCHEMA,
'SYS:java.io.FilePermission',
'<<ALL FILES>>',
'execute, read, write, delete'
dbms_java.grant_permission(
SCHEMA,
'SYS:java.lang.RuntimePermission',
'writeFileDescriptor',
dbms_java.grant_permission(
SCHEMA,
'SYS:java.lang.RuntimePermission',
'readFileDescriptor',
commit;
end;
To use:
SQL> exec ListFiles('/tmp', '*.log' );
PL/SQL procedure successfully completed.
SQL> select * from directory_list;
DIRECTORY FILENAME
/tmp X11_newfonts.log
/tmp ipv6agt.crashlog
/tmp dtappint.log
/tmp Core.sd-log
/tmp core_intg.sd-log
/tmp da.sd-log
/tmp dhcpclient.log
/tmp oracle8.sd-log
/tmp cc.sd-log
/tmp oms.log
/tmp OmniBack.sd-log
/tmp DPISInstall.sd-log
12 rows selected.
SQL> -
How to find out if JRE is installed on a Win32 system?
Hi,
does anyone know a good and reliable way to find out if JRE is installed on a Windows system? I want to start a JAR file but don't want to appear the "select program to start with"-chooser box when there's no JRE. Most unexperienced users give up at this point and delete my application. I'd rather let a popup-message appear that says something like "You need Java - download it here for free ...<link>".
Maybe a script file? Or a small C++ program that only checks if Java is installed and then starts the application (or gives out the popup). And how to check for an existing JRE?
I know about Webstart but have no server at hand...
Thanks!!!Try JSmooth ( http://jsmooth.sourceforge.net/ ). It's a Java executable wrapper.
From the website:
When the user clicks on the .exe, the windows application search the most suitable JVM installed on the computer to launch the java application. If no JVM is found, a dialog box is displayed to the users and they may be redirected to a web site (to www.java.com for example).
Even if you don't use it as it is you can learn from it, because JSmooth is Open Source. -
How to find number of characters in a character string
Hi,
Can anyone please tell me about how to find the number of characters in a character string type variable.
Reagards,
Sivahi,
Use STRLEN for Calculating String Length..
Assign it to integer variable for Further Use.Suppse u need to find string length for "hai".. this piece of code will help u
data: var type string value 'hai',
len type i.
len = strlen(var).
write len. -
Hi,
How to find the missing number(not number range) .Is there any functional module is there for missing nos.
ex: i have nos. from 50 to 100 & no.79 is missed.
For this issue if any functional module is there pls let me Know.
Thanks & Regards
VenkatNot sure about a function, but you could create your own function and use this logic.
REPORT zrich_0001.
TYPES: BEGIN OF ttab,
number TYPE i,
END OF ttab.
DATA: itab TYPE TABLE OF ttab.
DATA: wa LIKE LINE OF itab.
DATA: tmp LIKE LINE OF itab.
DATA: diff TYPE i.
DATA: rows TYPE i.
DATA: low_number TYPE i.
DATA: high_number TYPE i.
DATA: tmp_number TYPE i.
* Build an internal table with all the numbers
wa-number = 50. APPEND wa TO itab.
DO 50 TIMES.
wa-number = wa-number + 1. APPEND wa TO itab.
ENDDO.
* Create some missing numbers in the table
DELETE itab WHERE number = 63.
DELETE itab WHERE number = 64.
DELETE itab WHERE number = 65.
DELETE itab WHERE number = 79.
sort itab ASCENDING .
* find the low value.
clear wa.
READ TABLE itab INTO wa INDEX 1.
IF sy-subrc = 0.
low_number = wa-number.
ENDIF.
* Get the high value
rows = LINES( itab ).
clear wa.
READ TABLE itab INTO wa INDEX rows.
IF sy-subrc = 0.
high_number = wa-number.
ENDIF.
* Now find the missing numbers.
tmp_number = low_number.
DO.
IF tmp_number = high_number.
EXIT.
ENDIF.
READ TABLE itab INTO wa with key number = tmp_number.
IF sy-subrc <> 0.
WRITE:/ tmp_number.
ENDIF.
tmp_number = tmp_number + 1.
ENDDO.
Regards,
Rich Heilman -
How to find number for registering iLife11?
I've just bought iLife 11 and wants to register. Has to provide a number towards the end of the registration process. I tried the Part no. - the number below the barcode (7 digits) and the number o the barcode but none of them can be approved...
Any idea on how to find the required number?Don't want to insult you but this is a typical Microsoft reply, probably true but totally useless. What the hec is the marketing number on the sticker?
There is a partno (not accepted), a number under the barcode which seems to consist of four different parts, and a fat-printed code starting off with "AKP". Whichone is the correct one?
Thanks in advance for your reply. -
How to find number from text string??
Hi All,
Can you tell me how to find/ fetch number from string?
is there any function module for this.?
for example , I have string like "+++++1000000589+++"
and I need to fetch the invoice no 1000000589 from the above string..then How to do that? Letters may come first or number may come first and latter text...
Regards,
MrunalYou can do like this.
The below mentioned is code separate material
DO 18 TIMES.
LV_C = LV_C + 1.
LV_C1 = LV_C - 1.
IF GW_MATNR-MATNR+LV_C1(1) CN '0,1,2,3,4,5,6,7,8,9' .
IF ( ( LV_MAT EQ SPACE ) ) ." and ( lv_prefix eq space ) ) .
LV_PREFIX = 'X'.
CONCATENATE GW_TEMP-PREFIX GW_MATNR-MATNR+LV_C1(1) INTO
GW_TEMP-PREFIX.
ELSE.
LV_SUFFIX = 'X'.
CONCATENATE GW_TEMP-SUFFIX GW_MATNR-MATNR+LV_C1(1) INTO
GW_TEMP-SUFFIX.
ENDIF.
ELSEIF ( ( LV_SUFFIX EQ SPACE ) ) .
LV_MAT = 'X'.
CONCATENATE GW_TEMP-MATNR1 GW_MATNR-MATNR+LV_C1(1) INTO
GW_TEMP-MATNR1.
ELSEIF ( ( LV_MAT EQ 'X' ) ) .
CONCATENATE GW_TEMP-SUFFIX GW_MATNR-MATNR+LV_C1(1) INTO
GW_TEMP-SUFFIX.
ENDIF.
ENDDO. -
How to find number of users logged into ODI
Hi Experts,
I am using ODI 11g in linux environment. I have created 15 users in system manager tab.
My query is, how to find ODI11g logged in users list
For Example, out of 15 users, 7 users are accessing ODI, how to fetch 7 users name list.
Is there any query to find fetch the list
Can any one please help me out
Thanks in Advance
Regards,
PK
Edited by: 917775 on Jun 21, 2012 11:52 PMHi Rai,
Thank you for the response
I have verified already with v$session table, it seems how database user are login (lie it show the status as Active and InActive in status column) but I want to know the staus for how users are login into ODI.
I have verified with SNP_USER table also, no uses of the.
Any help on same
Thanks in advance
Regards,
Phanikanth -
How to find Number of pages in a particular spool.
Hi,
Can any one tell me in which table - table field the number of pages in the spool are stored.
There is a requirement that the list be sorted as per the number of pages present in the spool.
Help. Points will be rewarded.
Vinod.Vinod,
Use this FM RSPO_GET_PAGES_SPOOLJOB.
for more on spools check out this onlinehelp
http://help.sap.com/saphelp_nw2004s/helpdata/en/d9/4a8efb51ea11d189570000e829fbbd/frameset.htm
Regards,
Satish
Message was edited by:
Satish Panakala -
How to find out the amount of ram a computer can hold
I want to know how to find out what is the max amount of ram my computer can actually take advantage of, rather than tell you my model and you tell me what is the max because I know it varies according to the model of the Computer
But if you'd like to help the other way, here is my model: Macbook(13-inch, Mid 2010 [unibody]) basically the latest version of the white macbook.Pointdexter11 wrote:
simple version: what algorithms do they use to figure out the max is 8GB
That is not a simple question. I don't think anyone here knows the exact testing process that Apple uses to determine what the max ram will be at the time of release. This is done during the development process. -
How to find number of records in a cube and ODS....
Hi,
How do we find total number of records in a cube and ODS?
Is there any Tcode for this ?
From the content it is difficult to get the number of records, if it is more in number.
Thanks,
JeetuHello ,
Please check the following thread,
Number of records in a infocube
hope it helps,
assign points if helpful. -
How to count number of items present in a data block
hi all,
how to count how many items present in a particular data block in oracle forms 10g.
whether it is a text_item or display_item or list_item etc is there any method to do this.
please reply....hi all,
i have written this when-button pressed but the problem is how to get the next item name in the block
DECLARE
V_COUNT NUMBER:=0;
V_FIRSTITEM VARCHAR2(100):='';
BEGIN
GO_BLOCK('BLOCK_ITEMCOUNT');
V_FIRSTITEM := GET_BLOCK_PROPERTY('BLOCK_ITEMCOUNT', FIRST_ITEM);
LOOP
V_COUNT := V_COUNT + 1;
EXIT WHEN GET_ITEM_PROPERTY(V_FIRSTITEM, NEXTITEM) IS NULL;
--V_FIRSTITEM := GET_BLOCK_PROPERTY('BLOCK_ITEMCOUNT', NEXTITEM);
--V_COUNT := V_COUNT + 1;
END LOOP;
END; -
How to find number of lines in an input file.
Hi,
Can someone tell me, if there is a way to find out the number of lines in an input file. I do not want to read line by line and then count the number of lines read.Then how do you think a program could determine the amount of lines in an input file? How does a human know how many lines are on a page? You're going to have to count the items that separate two lines to know how many lines are in your file.
Either read line by line and count the amount or read char by char and count the number of '\n' occurences instead.
If you have control over writing the input files, however, you can make this better. Write a header in the file that specifies the amount of lines in it. The first line of your file will then hold a number that represents the amount of lines in the file, so you need only read the first line to know how many lines are in your file. -
How can find number of line item?
HI All.
I have one internal table it has PO number ,line item and quantity.
Each PO number have number of Line item ,
now i want find how many line item per Po number .I need find for line item for all Po number.please help me
Thanks.
Jaysee the below code and i tested and it is working well.
data : begin of i_ekpo occurs 0,
ebeln like ekpo-ebeln,
ebelp like ekpo-ebelp,
end of i_ekpo.
data v_count type i.
start-of-selection.
select ebeln ebelp from ekpo into table i_ekpo.
loop at i_ekpo.
v_count = v_count + 1.
at end of ebeln.
write:/ i_ekpo-ebeln,v_count.
clear : v_count.
endat.
endloop.
Reward points if it is helpful
Thanks
Seshu
Maybe you are looking for
-
Seeing Reminders in iCal iOS7?
for some reason i am not finding any documentation on reminders and clicking "Reminders Help" pulls up a nothing available page. does anyone know if it is possible to see Reminders that i have assigned a "reminder" date and time to in iCal? this woul
-
»Open« O becomes closed when placed in InDesign
Hi there! Id guess this is some sort of nesting error or something ... I have a capital letter O, which has been converted to paths. Those two paths building the O are part of a Compound Path now, so that the inner path acts like a see-through area j
-
Converting Python To C with Cython
I am trying to convert a more complex Python script into C with C. But in order to get used to Cython i thought of trying first to convert a simple HelloWorld.py into C, so trivially it look some kind like this: HelloWorld.py def main(): print("Hello
-
I'm having text rendering problem with conky, strangely this isn't happening on my laptop with pretty much the same arch setup. I've tried many configuration settings but it is still happening. My system is; Arch 64 bit Kde4 nvidia drivers and standa
-
Object or text reflections.
I have seen the Keynote presentation by Steave Jobs, I noticed that some objects had a window type reflection on the buttom of the object. Does anybody know how that is done?