<?xml version="1.0"?>
<!-- Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. -->
<miv>
<!--
/*
    NO CHANGES MADE HERE - ALREADY MISSING NOT_SO_NEW COLUMNS
    If this is to be used, synchronize with DB2/SQLServer definitions
    If not, it should be removed

 ******************************************************************************
 * WARNING: For non-DB2/SQLSERVER miv types, the "implementation" will be to  *
 *          return constants. As they are brought on line, the owner/developer*
 *          should add real implementations were possible.                    *
 ******************************************************************************
    Added three columns at end of current miv_columns query (see DB2/SQLSERVER):
      NULL CHARSET, 1 BYTES_PER_CHAR, 'N' USE_CHAR_SEMANTICS

      CHARSET: The IANA charset [RFC 2978] corresponding to the character
               set/code page defined for this attribute on the metadata source.

      BYTES_PER_CHAR: The (max) number of bytes required to represent a 
                      character in the charset. int, default = 1

      USE_CHAR_SEMANTICS: Did the definition for this attribute on the metadata
                          source specify character semantics? (Y/N) default N
 */
-->
<miv_business_areas type="SQLStatement" default="true">
select * from (
select '1' business_area_id,
        '0' parent_business_area_id,
        'eBusiness Suite'  business_area_name,
        'eBusiness Suite'  business_name,
        'eBusiness Suite' description
from dual
union
select application_short_name business_area_id,
        '1' parent_business_area_id,
        application_short_name || '  ' || application_name  business_area_name,
        application_name business_name,
        '' description
from fnd_application_vl<Parameter name="dblink"/> a
where exists (select o.oracle_username from 
fnd_product_installations<Parameter name="dblink"/> p, 
fnd_oracle_userid<Parameter name="dblink"/> o
where p.oracle_id = o.oracle_id
and p.application_id = a.application_id))
</miv_business_areas>



<miv_business_area_objects type="SQLStatement" default="true">
SELECT  a.table_name object_name, 
        a.application_short_name parent_business_area_id, 
        'TABLE' type,
        c.description description
FROM (SELECT d.table_name, b.application_id, b.application_short_name
	  FROM 	dba_tables<Parameter name="dblink"/> d, 
		fnd_application<Parameter name="dblink"/> b,
                fnd_product_installations<Parameter name="dblink"/> p, 
                fnd_oracle_userid<Parameter name="dblink"/> o
	  WHERE d.owner = o.oracle_username
	    AND b.application_id = p.application_id
            AND p.oracle_id = o.oracle_id
            AND NOT EXISTS (SELECT table_name 
                            FROM dba_snapshots<Parameter name="dblink"/>
                            WHERE table_name = d.table_name)) a 
  LEFT OUTER JOIN fnd_tables<Parameter name="dblink"/> c
  ON   c.application_id = a.application_id
  AND  c.table_name = a.table_name
UNION ALL
SELECT  a.view_name object_name, 
        b.application_short_name parent_business_area_id, 
        'VIEW' type,
        a.description description
FROM 	fnd_views<Parameter name="dblink"/> a, 
	fnd_application<Parameter name="dblink"/> b, 
	dba_views<Parameter name="dblink"/> c 
WHERE a.application_id = b.application_id
AND a.view_name = c.view_name
AND c.owner = <Parameter name="owner"/> 
UNION ALL
SELECT  a.sequence_name object_name, 
        a.application_short_name parent_business_area_id, 
        'SEQUENCE' type,
        c.description description
FROM (SELECT d.sequence_name, b.application_short_name, b.application_id 
      FROM 	dba_sequences<Parameter name="dblink"/> d, 
		fnd_application<Parameter name="dblink"/> b,
                fnd_product_installations<Parameter name="dblink"/> p, 
                fnd_oracle_userid<Parameter name="dblink"/> o
      WHERE   p.oracle_id = o.oracle_id
          AND b.application_id = p.application_id
          AND d.sequence_owner = o.oracle_username) a 
      LEFT OUTER JOIN fnd_sequences<Parameter name="dblink"/> c
      ON c.application_id = a.application_id
      AND c.sequence_name = a.sequence_name
</miv_business_area_objects>







<miv_tables type="SQLStatement" default="true">
SELECT  a.table_name table_name, 
        a.table_name business_name, 
        c.description description
FROM (SELECT d.table_name, b.application_id 
    FROM dba_tables<Parameter name="dblink"/> d, 
	 fnd_application<Parameter name="dblink"/> b,
         fnd_product_installations<Parameter name="dblink"/> p, 
         fnd_oracle_userid<Parameter name="dblink"/> o
    WHERE p.oracle_id = o.oracle_id
      AND b.application_id = p.application_id
      AND d.owner = o.oracle_username) a 
    LEFT OUTER JOIN fnd_tables<Parameter name="dblink"/> c
ON c.application_id = a.application_id
AND c.table_name = a.table_name
</miv_tables>









<miv_views type="SQLStatement" default="true">
SELECT  a.view_name view_name, 
        a.view_name business_name,
        NVL(a.description, '') description,
        a.text view_definition
FROM 	fnd_views<Parameter name="dblink"/> a, 
	fnd_application<Parameter name="dblink"/> b, 
	dba_views<Parameter name="dblink"/> c 
WHERE a.application_id = b.application_id
AND a.view_name = c.view_name
AND c.owner = <Parameter name="owner"/> 
</miv_views>










<miv_sequences type="SQLStatement" default="true">
SELECT  a.sequence_name sequence_name, 
        a.sequence_name business_name, 
        c.description description
FROM (SELECT d.sequence_name, d.sequence_owner, b.application_id 
      FROM 	dba_sequences<Parameter name="dblink"/> d, 
		fnd_application<Parameter name="dblink"/> b,
                fnd_product_installations<Parameter name="dblink"/> p, 
                fnd_oracle_userid<Parameter name="dblink"/> o
      WHERE   p.oracle_id = o.oracle_id
          AND b.application_id = p.application_id
          AND d.sequence_owner = o.oracle_username) a
      LEFT OUTER JOIN fnd_sequences<Parameter name="dblink"/> c
      ON c.application_id = a.application_id
      AND c.sequence_name = a.sequence_name
</miv_sequences>



<miv_columns type="SQLStatement" default="true">
SELECT a.table_name entity_name,
          a.column_id position,
          a.column_name column_name,
          a.data_type data_type,
          a.data_length length,
          a.data_precision precision,
          a.data_scale scale,
          e.description description,
          a.nullable isNullable,
          '' DATA_TYPE_OWNER,
          '' DATA_DEFAULT,
         a.CHARSET CHARSET,
         a.BYTES_PER_CHAR BYTES_PER_CHAR,
         a.USE_CHAR_SEMANTICS USE_CHAR_SEMANTICS
        FROM (SELECT ac.table_name table_name,
              ac.column_id column_id,
              rtrim(ac.column_name) column_name,
          rtrim(ac.data_type) data_type,
          ac.data_length data_length,
          ac.data_precision data_precision,
          ac.data_scale data_scale,
          '' description,
          ac.nullable nullable,
          '' DATA_TYPE_OWNER,
          '' DATA_DEFAULT,
         decode(ac.CHARACTER_SET_NAME, NULL, ac.CHARACTER_SET_NAME, NLS_CHARSET_NAME(NLS_CHARSET_ID(ac.CHARACTER_SET_NAME))) CHARSET,
         decode(ac.CHAR_LENGTH,NULL, 1, 0, 1,ac.DATA_LENGTH/ac.CHAR_LENGTH) BYTES_PER_CHAR,
         decode(ac.CHAR_USED,'C', 'Y','N') USE_CHAR_SEMANTICS,
          b.application_id application_id
         FROM   dba_tab_columns<Parameter name="dblink"/> ac,
                fnd_application<Parameter name="dblink"/> b,
                fnd_product_installations<Parameter name="dblink"/> p,
                fnd_oracle_userid<Parameter name="dblink"/> o
         WHERE p.oracle_id = o.oracle_id
           AND b.application_id = p.application_id
           AND ac.owner = o.oracle_username) a
         LEFT OUTER JOIN
             (SELECT d.column_name column_name,
                     d.description description,
                     c.application_id application_id,
                 c.table_name table_name
          FROM  fnd_tables<Parameter name="dblink"/> c,
                fnd_columns<Parameter name="dblink"/> d
              WHERE c.application_id = d.application_id
               AND  c.table_id = d.table_id) e
        ON a.application_id = e.application_id
        AND a.table_name = e.table_name
        AND a.column_name = e.column_name
UNION ALL
        SELECT ac.table_name entity_name,
               ac.column_id position,
          rtrim(ac.column_name) column_name,
          rtrim(ac.data_type) data_type,
          ac.data_length length,
          ac.data_precision precision,
          ac.data_scale scale,
          '' description,
          ac.nullable isNullable,
          '' DATA_TYPE_OWNER,
          '' DATA_DEFAULT,
         decode(ac.CHARACTER_SET_NAME, NULL, ac.CHARACTER_SET_NAME, NLS_CHARSET_NAME(NLS_CHARSET_ID(ac.CHARACTER_SET_NAME))) CHARSET,
         decode(ac.CHAR_LENGTH,NULL, 1, 0, 1,ac.DATA_LENGTH/ac.CHAR_LENGTH) BYTES_PER_CHAR,
         decode(ac.CHAR_USED,'C', 'Y','N') USE_CHAR_SEMANTICS
        FROM dba_tab_columns<Parameter name="dblink"/> ac,
             fnd_application<Parameter name="dblink"/> b,
             fnd_views<Parameter name="dblink"/> c
    WHERE ac.owner = <Parameter name="owner"/> 
    AND ac.table_name = c.view_name
    AND b.application_id = c.application_id

</miv_columns>


<miv_unique_keys type="SQLStatement" default="true">
SELECT b.table_name entity_name, 
       a.primary_key_name key_name,
       a.primary_key_name business_name,
       a.description description,
       decode(instr(a.primary_key_name, '_PK', LENGTH(a.primary_key_name)-3), 0, 'U', 'P') constraint_type
FROM 	fnd_primary_keys<Parameter name="dblink"/> a, 
	fnd_tables<Parameter name="dblink"/> b
WHERE a.application_id = b.application_id
AND  a.table_id = b.table_id
</miv_unique_keys>









<miv_foreign_keys type="SQLStatement" default="true">
SELECT b.table_name entity_name,
       a.foreign_key_name foreign_key_name,
       a.foreign_key_name business_name,
       a.description description,
       c.primary_key_name unique_key_name
FROM  fnd_foreign_keys<Parameter name="dblink"/> a, 
      fnd_tables<Parameter name="dblink"/> b,
      fnd_primary_keys<Parameter name="dblink"/> c
WHERE a.application_id = b.application_id
  AND a.table_id = b.table_id
  AND a.primary_key_application_id = c.application_id
  AND a.primary_key_table_id = c.table_id
  AND a.primary_key_id = c.primary_key_id
</miv_foreign_keys>








<miv_key_columns type="SQLStatement" default="true">
SELECT * FROM (
SELECT b.primary_key_name key_name, 
    c.column_name column_name, 
    a.primary_key_sequence position
FROM fnd_primary_key_columns<Parameter name="dblink"/> a,
     fnd_primary_keys<Parameter name="dblink"/> b,
     fnd_columns<Parameter name="dblink"/> c
WHERE a.application_id = b.application_id
  AND a.table_id = b.table_id
  AND a.primary_key_id = b.primary_key_id
  AND b.application_id = c.application_id
  AND b.table_id = c.table_id
  AND a.column_id = c.column_id
UNION ALL 
SELECT b.foreign_key_name key_name, 
    c.column_name column_name, 
    a.foreign_key_sequence position
FROM fnd_foreign_key_columns<Parameter name="dblink"/> a,
     fnd_foreign_keys<Parameter name="dblink"/> b,
     fnd_columns<Parameter name="dblink"/> c
WHERE a.application_id = b.application_id
  AND a.table_id = b.table_id
  AND a.foreign_key_id = b.foreign_key_id
  AND b.application_id = c.application_id
  AND b.table_id = c.table_id
  AND a.column_id = c.column_id
)
ORDER BY key_name, position
</miv_key_columns>
 







<miv_fk_tables type="SQLStatement" default="true">
SELECT distinct b.table_name orig_table_name,
       c.table_name foreign_table_name,
       c.description foreign_table_description
FROM fnd_foreign_keys<Parameter name="dblink"/> a,
     fnd_tables<Parameter name="dblink"/> b,
     fnd_tables<Parameter name="dblink"/> c
WHERE a.application_id = b.application_id
  AND a.table_id = b.table_id
  AND a.application_id = c.application_id
  AND a.primary_key_table_id = c.table_id
</miv_fk_tables>





<miv_capabilities type="ResultSet">
	<table_supported>true</table_supported>
	<view_supported>true</view_supported>
	<sequence_supported>true</sequence_supported>
	<table_name_filter_supported>true</table_name_filter_supported>
	<view_name_filter_supported>true</view_name_filter_supported>
	<sequence_name_filter_supported>true</sequence_name_filter_supported>
	<business_area_supported>true</business_area_supported>	
	<business_area_table_supported>true</business_area_table_supported>	
	<business_area_view_supported>true</business_area_view_supported>	
	<business_area_sequence_supported>true</business_area_sequence_supported>	
	<application_owner_supported>true</application_owner_supported>
	<table_fklevel_supported>true</table_fklevel_supported>
	<reimport_supported>true</reimport_supported>
	<data_object_at_leaf_levels>true</data_object_at_leaf_levels>
	<multiple_tree_supported>false</multiple_tree_supported>
</miv_capabilities>



</miv>
